From 38e32581c3beb0b19379272682726459faa3b90f Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Mon, 28 Jul 2025 17:19:27 +0200 Subject: [PATCH 01/10] This branch implements more csv parsing options. The goal is that the following sql string is correctly parsed: ``` COPY "{}" FROM '{}' WITH (FORMAT CSV, DELIMITER '|', NULL '', QUOTE '"'); ``` where delimiter is the delimiter of the csv file, null is the value of null values in the csv and quote is the string used to quote values. --- src/parser/bison_parser.cpp | 3469 +++++++++++----------- src/parser/bison_parser.h | 20 +- src/parser/bison_parser.y | 79 + src/parser/flex_lexer.cpp | 5122 +++++++++++++++++---------------- src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 2 + src/sql/ExportStatement.h | 3 + src/sql/ImportExportOptions.h | 3 + src/sql/ImportStatement.h | 3 + src/sql/statements.cpp | 26 +- test/queries/queries-good.sql | 1 + test/sql_tests.cpp | 16 +- 12 files changed, 4512 insertions(+), 4234 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 719b2b1b..34ecb532 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -307,165 +307,167 @@ enum yysymbol_kind_t YYSYMBOL_FOREIGN = 171, /* FOREIGN */ YYSYMBOL_KEY = 172, /* KEY */ YYSYMBOL_REFERENCES = 173, /* REFERENCES */ - YYSYMBOL_174_ = 174, /* '=' */ - YYSYMBOL_EQUALS = 175, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 176, /* NOTEQUALS */ - YYSYMBOL_177_ = 177, /* '<' */ - YYSYMBOL_178_ = 178, /* '>' */ - YYSYMBOL_LESS = 179, /* LESS */ - YYSYMBOL_GREATER = 180, /* GREATER */ - YYSYMBOL_LESSEQ = 181, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 182, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 183, /* NOTNULL */ - YYSYMBOL_184_ = 184, /* '+' */ - YYSYMBOL_185_ = 185, /* '-' */ - YYSYMBOL_186_ = 186, /* '*' */ - YYSYMBOL_187_ = 187, /* '/' */ - YYSYMBOL_188_ = 188, /* '%' */ - YYSYMBOL_189_ = 189, /* '^' */ - YYSYMBOL_UMINUS = 190, /* UMINUS */ - YYSYMBOL_191_ = 191, /* '[' */ - YYSYMBOL_192_ = 192, /* ']' */ - YYSYMBOL_193_ = 193, /* '(' */ - YYSYMBOL_194_ = 194, /* ')' */ - YYSYMBOL_195_ = 195, /* '.' */ - YYSYMBOL_196_ = 196, /* ';' */ - YYSYMBOL_197_ = 197, /* ',' */ - YYSYMBOL_198_ = 198, /* '?' */ - YYSYMBOL_YYACCEPT = 199, /* $accept */ - YYSYMBOL_input = 200, /* input */ - YYSYMBOL_statement_list = 201, /* statement_list */ - YYSYMBOL_statement = 202, /* statement */ - YYSYMBOL_preparable_statement = 203, /* preparable_statement */ - YYSYMBOL_opt_hints = 204, /* opt_hints */ - YYSYMBOL_hint_list = 205, /* hint_list */ - YYSYMBOL_hint = 206, /* hint */ - YYSYMBOL_transaction_statement = 207, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 208, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 209, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 210, /* prepare_target_query */ - YYSYMBOL_execute_statement = 211, /* execute_statement */ - YYSYMBOL_import_statement = 212, /* import_statement */ - YYSYMBOL_file_type = 213, /* file_type */ - YYSYMBOL_file_path = 214, /* file_path */ - YYSYMBOL_opt_import_export_options = 215, /* opt_import_export_options */ - YYSYMBOL_import_export_options = 216, /* import_export_options */ - YYSYMBOL_export_statement = 217, /* export_statement */ - YYSYMBOL_show_statement = 218, /* show_statement */ - YYSYMBOL_create_statement = 219, /* create_statement */ - YYSYMBOL_opt_not_exists = 220, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 221, /* table_elem_commalist */ - YYSYMBOL_table_elem = 222, /* table_elem */ - YYSYMBOL_column_def = 223, /* column_def */ - YYSYMBOL_column_type = 224, /* column_type */ - YYSYMBOL_opt_time_precision = 225, /* opt_time_precision */ - YYSYMBOL_opt_decimal_specification = 226, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 227, /* opt_column_constraints */ - YYSYMBOL_column_constraints = 228, /* column_constraints */ - YYSYMBOL_column_constraint = 229, /* column_constraint */ - YYSYMBOL_table_constraint = 230, /* table_constraint */ - YYSYMBOL_references_spec = 231, /* references_spec */ - YYSYMBOL_drop_statement = 232, /* drop_statement */ - YYSYMBOL_opt_exists = 233, /* opt_exists */ - YYSYMBOL_alter_statement = 234, /* alter_statement */ - YYSYMBOL_alter_action = 235, /* alter_action */ - YYSYMBOL_drop_action = 236, /* drop_action */ - YYSYMBOL_delete_statement = 237, /* delete_statement */ - YYSYMBOL_truncate_statement = 238, /* truncate_statement */ - YYSYMBOL_insert_statement = 239, /* insert_statement */ - YYSYMBOL_opt_column_list = 240, /* opt_column_list */ - YYSYMBOL_update_statement = 241, /* update_statement */ - YYSYMBOL_update_clause_commalist = 242, /* update_clause_commalist */ - YYSYMBOL_update_clause = 243, /* update_clause */ - YYSYMBOL_select_statement = 244, /* select_statement */ - YYSYMBOL_select_within_set_operation = 245, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 246, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 247, /* select_with_paren */ - YYSYMBOL_select_no_paren = 248, /* select_no_paren */ - YYSYMBOL_set_operator = 249, /* set_operator */ - YYSYMBOL_set_type = 250, /* set_type */ - YYSYMBOL_opt_all = 251, /* opt_all */ - YYSYMBOL_select_clause = 252, /* select_clause */ - YYSYMBOL_opt_distinct = 253, /* opt_distinct */ - YYSYMBOL_select_list = 254, /* select_list */ - YYSYMBOL_opt_from_clause = 255, /* opt_from_clause */ - YYSYMBOL_from_clause = 256, /* from_clause */ - YYSYMBOL_opt_where = 257, /* opt_where */ - YYSYMBOL_opt_group = 258, /* opt_group */ - YYSYMBOL_opt_having = 259, /* opt_having */ - YYSYMBOL_opt_order = 260, /* opt_order */ - YYSYMBOL_order_list = 261, /* order_list */ - YYSYMBOL_order_desc = 262, /* order_desc */ - YYSYMBOL_opt_order_type = 263, /* opt_order_type */ - YYSYMBOL_opt_top = 264, /* opt_top */ - YYSYMBOL_opt_limit = 265, /* opt_limit */ - YYSYMBOL_expr_list = 266, /* expr_list */ - YYSYMBOL_opt_extended_literal_list = 267, /* opt_extended_literal_list */ - YYSYMBOL_extended_literal_list = 268, /* extended_literal_list */ - YYSYMBOL_casted_extended_literal = 269, /* casted_extended_literal */ - YYSYMBOL_extended_literal = 270, /* extended_literal */ - YYSYMBOL_expr_alias = 271, /* expr_alias */ - YYSYMBOL_expr = 272, /* expr */ - YYSYMBOL_operand = 273, /* operand */ - YYSYMBOL_scalar_expr = 274, /* scalar_expr */ - YYSYMBOL_unary_expr = 275, /* unary_expr */ - YYSYMBOL_binary_expr = 276, /* binary_expr */ - YYSYMBOL_logic_expr = 277, /* logic_expr */ - YYSYMBOL_in_expr = 278, /* in_expr */ - YYSYMBOL_case_expr = 279, /* case_expr */ - YYSYMBOL_case_list = 280, /* case_list */ - YYSYMBOL_exists_expr = 281, /* exists_expr */ - YYSYMBOL_comp_expr = 282, /* comp_expr */ - YYSYMBOL_function_expr = 283, /* function_expr */ - YYSYMBOL_opt_window = 284, /* opt_window */ - YYSYMBOL_opt_partition = 285, /* opt_partition */ - YYSYMBOL_opt_frame_clause = 286, /* opt_frame_clause */ - YYSYMBOL_frame_type = 287, /* frame_type */ - YYSYMBOL_frame_bound = 288, /* frame_bound */ - YYSYMBOL_extract_expr = 289, /* extract_expr */ - YYSYMBOL_cast_expr = 290, /* cast_expr */ - YYSYMBOL_datetime_field = 291, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 292, /* datetime_field_plural */ - YYSYMBOL_duration_field = 293, /* duration_field */ - YYSYMBOL_array_expr = 294, /* array_expr */ - YYSYMBOL_array_index = 295, /* array_index */ - YYSYMBOL_between_expr = 296, /* between_expr */ - YYSYMBOL_column_name = 297, /* column_name */ - YYSYMBOL_literal = 298, /* literal */ - YYSYMBOL_string_literal = 299, /* string_literal */ - YYSYMBOL_bool_literal = 300, /* bool_literal */ - YYSYMBOL_num_literal = 301, /* num_literal */ - YYSYMBOL_int_literal = 302, /* int_literal */ - YYSYMBOL_null_literal = 303, /* null_literal */ - YYSYMBOL_date_literal = 304, /* date_literal */ - YYSYMBOL_interval_literal = 305, /* interval_literal */ - YYSYMBOL_param_expr = 306, /* param_expr */ - YYSYMBOL_table_ref = 307, /* table_ref */ - YYSYMBOL_table_ref_atomic = 308, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 309, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 310, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 311, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 312, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 313, /* table_name */ - YYSYMBOL_opt_index_name = 314, /* opt_index_name */ - YYSYMBOL_table_alias = 315, /* table_alias */ - YYSYMBOL_opt_table_alias = 316, /* opt_table_alias */ - YYSYMBOL_alias = 317, /* alias */ - YYSYMBOL_opt_alias = 318, /* opt_alias */ - YYSYMBOL_opt_locking_clause = 319, /* opt_locking_clause */ - YYSYMBOL_opt_locking_clause_list = 320, /* opt_locking_clause_list */ - YYSYMBOL_locking_clause = 321, /* locking_clause */ - YYSYMBOL_row_lock_mode = 322, /* row_lock_mode */ - YYSYMBOL_opt_row_lock_policy = 323, /* opt_row_lock_policy */ - YYSYMBOL_opt_with_clause = 324, /* opt_with_clause */ - YYSYMBOL_with_clause = 325, /* with_clause */ - YYSYMBOL_with_description_list = 326, /* with_description_list */ - YYSYMBOL_with_description = 327, /* with_description */ - YYSYMBOL_join_clause = 328, /* join_clause */ - YYSYMBOL_opt_join_type = 329, /* opt_join_type */ - YYSYMBOL_join_condition = 330, /* join_condition */ - YYSYMBOL_opt_semicolon = 331, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 332 /* ident_commalist */ + YYSYMBOL_DELIMITER = 174, /* DELIMITER */ + YYSYMBOL_QUOTE = 175, /* QUOTE */ + YYSYMBOL_176_ = 176, /* '=' */ + YYSYMBOL_EQUALS = 177, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 178, /* NOTEQUALS */ + YYSYMBOL_179_ = 179, /* '<' */ + YYSYMBOL_180_ = 180, /* '>' */ + YYSYMBOL_LESS = 181, /* LESS */ + YYSYMBOL_GREATER = 182, /* GREATER */ + YYSYMBOL_LESSEQ = 183, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 184, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 185, /* NOTNULL */ + YYSYMBOL_186_ = 186, /* '+' */ + YYSYMBOL_187_ = 187, /* '-' */ + YYSYMBOL_188_ = 188, /* '*' */ + YYSYMBOL_189_ = 189, /* '/' */ + YYSYMBOL_190_ = 190, /* '%' */ + YYSYMBOL_191_ = 191, /* '^' */ + YYSYMBOL_UMINUS = 192, /* UMINUS */ + YYSYMBOL_193_ = 193, /* '[' */ + YYSYMBOL_194_ = 194, /* ']' */ + YYSYMBOL_195_ = 195, /* '(' */ + YYSYMBOL_196_ = 196, /* ')' */ + YYSYMBOL_197_ = 197, /* '.' */ + YYSYMBOL_198_ = 198, /* ';' */ + YYSYMBOL_199_ = 199, /* ',' */ + YYSYMBOL_200_ = 200, /* '?' */ + YYSYMBOL_YYACCEPT = 201, /* $accept */ + YYSYMBOL_input = 202, /* input */ + YYSYMBOL_statement_list = 203, /* statement_list */ + YYSYMBOL_statement = 204, /* statement */ + YYSYMBOL_preparable_statement = 205, /* preparable_statement */ + YYSYMBOL_opt_hints = 206, /* opt_hints */ + YYSYMBOL_hint_list = 207, /* hint_list */ + YYSYMBOL_hint = 208, /* hint */ + YYSYMBOL_transaction_statement = 209, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 210, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 211, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 212, /* prepare_target_query */ + YYSYMBOL_execute_statement = 213, /* execute_statement */ + YYSYMBOL_import_statement = 214, /* import_statement */ + YYSYMBOL_file_type = 215, /* file_type */ + YYSYMBOL_file_path = 216, /* file_path */ + YYSYMBOL_opt_import_export_options = 217, /* opt_import_export_options */ + YYSYMBOL_import_export_options = 218, /* import_export_options */ + YYSYMBOL_export_statement = 219, /* export_statement */ + YYSYMBOL_show_statement = 220, /* show_statement */ + YYSYMBOL_create_statement = 221, /* create_statement */ + YYSYMBOL_opt_not_exists = 222, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 223, /* table_elem_commalist */ + YYSYMBOL_table_elem = 224, /* table_elem */ + YYSYMBOL_column_def = 225, /* column_def */ + YYSYMBOL_column_type = 226, /* column_type */ + YYSYMBOL_opt_time_precision = 227, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 228, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 229, /* opt_column_constraints */ + YYSYMBOL_column_constraints = 230, /* column_constraints */ + YYSYMBOL_column_constraint = 231, /* column_constraint */ + YYSYMBOL_table_constraint = 232, /* table_constraint */ + YYSYMBOL_references_spec = 233, /* references_spec */ + YYSYMBOL_drop_statement = 234, /* drop_statement */ + YYSYMBOL_opt_exists = 235, /* opt_exists */ + YYSYMBOL_alter_statement = 236, /* alter_statement */ + YYSYMBOL_alter_action = 237, /* alter_action */ + YYSYMBOL_drop_action = 238, /* drop_action */ + YYSYMBOL_delete_statement = 239, /* delete_statement */ + YYSYMBOL_truncate_statement = 240, /* truncate_statement */ + YYSYMBOL_insert_statement = 241, /* insert_statement */ + YYSYMBOL_opt_column_list = 242, /* opt_column_list */ + YYSYMBOL_update_statement = 243, /* update_statement */ + YYSYMBOL_update_clause_commalist = 244, /* update_clause_commalist */ + YYSYMBOL_update_clause = 245, /* update_clause */ + YYSYMBOL_select_statement = 246, /* select_statement */ + YYSYMBOL_select_within_set_operation = 247, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 248, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 249, /* select_with_paren */ + YYSYMBOL_select_no_paren = 250, /* select_no_paren */ + YYSYMBOL_set_operator = 251, /* set_operator */ + YYSYMBOL_set_type = 252, /* set_type */ + YYSYMBOL_opt_all = 253, /* opt_all */ + YYSYMBOL_select_clause = 254, /* select_clause */ + YYSYMBOL_opt_distinct = 255, /* opt_distinct */ + YYSYMBOL_select_list = 256, /* select_list */ + YYSYMBOL_opt_from_clause = 257, /* opt_from_clause */ + YYSYMBOL_from_clause = 258, /* from_clause */ + YYSYMBOL_opt_where = 259, /* opt_where */ + YYSYMBOL_opt_group = 260, /* opt_group */ + YYSYMBOL_opt_having = 261, /* opt_having */ + YYSYMBOL_opt_order = 262, /* opt_order */ + YYSYMBOL_order_list = 263, /* order_list */ + YYSYMBOL_order_desc = 264, /* order_desc */ + YYSYMBOL_opt_order_type = 265, /* opt_order_type */ + YYSYMBOL_opt_top = 266, /* opt_top */ + YYSYMBOL_opt_limit = 267, /* opt_limit */ + YYSYMBOL_expr_list = 268, /* expr_list */ + YYSYMBOL_opt_extended_literal_list = 269, /* opt_extended_literal_list */ + YYSYMBOL_extended_literal_list = 270, /* extended_literal_list */ + YYSYMBOL_casted_extended_literal = 271, /* casted_extended_literal */ + YYSYMBOL_extended_literal = 272, /* extended_literal */ + YYSYMBOL_expr_alias = 273, /* expr_alias */ + YYSYMBOL_expr = 274, /* expr */ + YYSYMBOL_operand = 275, /* operand */ + YYSYMBOL_scalar_expr = 276, /* scalar_expr */ + YYSYMBOL_unary_expr = 277, /* unary_expr */ + YYSYMBOL_binary_expr = 278, /* binary_expr */ + YYSYMBOL_logic_expr = 279, /* logic_expr */ + YYSYMBOL_in_expr = 280, /* in_expr */ + YYSYMBOL_case_expr = 281, /* case_expr */ + YYSYMBOL_case_list = 282, /* case_list */ + YYSYMBOL_exists_expr = 283, /* exists_expr */ + YYSYMBOL_comp_expr = 284, /* comp_expr */ + YYSYMBOL_function_expr = 285, /* function_expr */ + YYSYMBOL_opt_window = 286, /* opt_window */ + YYSYMBOL_opt_partition = 287, /* opt_partition */ + YYSYMBOL_opt_frame_clause = 288, /* opt_frame_clause */ + YYSYMBOL_frame_type = 289, /* frame_type */ + YYSYMBOL_frame_bound = 290, /* frame_bound */ + YYSYMBOL_extract_expr = 291, /* extract_expr */ + YYSYMBOL_cast_expr = 292, /* cast_expr */ + YYSYMBOL_datetime_field = 293, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 294, /* datetime_field_plural */ + YYSYMBOL_duration_field = 295, /* duration_field */ + YYSYMBOL_array_expr = 296, /* array_expr */ + YYSYMBOL_array_index = 297, /* array_index */ + YYSYMBOL_between_expr = 298, /* between_expr */ + YYSYMBOL_column_name = 299, /* column_name */ + YYSYMBOL_literal = 300, /* literal */ + YYSYMBOL_string_literal = 301, /* string_literal */ + YYSYMBOL_bool_literal = 302, /* bool_literal */ + YYSYMBOL_num_literal = 303, /* num_literal */ + YYSYMBOL_int_literal = 304, /* int_literal */ + YYSYMBOL_null_literal = 305, /* null_literal */ + YYSYMBOL_date_literal = 306, /* date_literal */ + YYSYMBOL_interval_literal = 307, /* interval_literal */ + YYSYMBOL_param_expr = 308, /* param_expr */ + YYSYMBOL_table_ref = 309, /* table_ref */ + YYSYMBOL_table_ref_atomic = 310, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 311, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 312, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 313, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 314, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 315, /* table_name */ + YYSYMBOL_opt_index_name = 316, /* opt_index_name */ + YYSYMBOL_table_alias = 317, /* table_alias */ + YYSYMBOL_opt_table_alias = 318, /* opt_table_alias */ + YYSYMBOL_alias = 319, /* alias */ + YYSYMBOL_opt_alias = 320, /* opt_alias */ + YYSYMBOL_opt_locking_clause = 321, /* opt_locking_clause */ + YYSYMBOL_opt_locking_clause_list = 322, /* opt_locking_clause_list */ + YYSYMBOL_locking_clause = 323, /* locking_clause */ + YYSYMBOL_row_lock_mode = 324, /* row_lock_mode */ + YYSYMBOL_opt_row_lock_policy = 325, /* opt_row_lock_policy */ + YYSYMBOL_opt_with_clause = 326, /* opt_with_clause */ + YYSYMBOL_with_clause = 327, /* with_clause */ + YYSYMBOL_with_description_list = 328, /* with_description_list */ + YYSYMBOL_with_description = 329, /* with_description */ + YYSYMBOL_join_clause = 330, /* join_clause */ + YYSYMBOL_opt_join_type = 331, /* opt_join_type */ + YYSYMBOL_join_condition = 332, /* join_condition */ + YYSYMBOL_opt_semicolon = 333, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 334 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -796,19 +798,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 905 +#define YYLAST 893 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 199 +#define YYNTOKENS 201 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 134 /* YYNRULES -- Number of rules. */ -#define YYNRULES 349 +#define YYNRULES 355 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 640 +#define YYNSTATES 652 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 436 +#define YYMAXUTOK 438 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -825,13 +827,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, 188, 2, 2, - 193, 194, 186, 184, 197, 185, 195, 187, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 196, - 177, 174, 178, 198, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 190, 2, 2, + 195, 196, 188, 186, 199, 187, 197, 189, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 198, + 179, 176, 180, 200, 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, 191, 2, 192, 189, 2, 2, 2, 2, 2, + 2, 193, 2, 194, 191, 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, @@ -864,49 +866,50 @@ static const yytype_uint8 yytranslate[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, - 176, 179, 180, 181, 182, 183, 190 + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 177, 178, 181, 182, 183, 184, 185, 192 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 335, 335, 354, 360, 367, 371, 375, 376, 377, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 394, 395, 397, 401, 406, 410, 420, 421, 422, 424, - 424, 430, 436, 438, 442, 454, 460, 473, 488, 490, - 491, 492, 494, 503, 507, 517, 527, 538, 554, 555, - 560, 571, 584, 596, 603, 610, 619, 620, 622, 626, - 631, 632, 634, 642, 643, 644, 645, 646, 647, 648, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 664, 665, 667, 668, 669, 671, 672, 674, 678, - 682, 687, 695, 696, 697, 698, 700, 701, 702, 704, - 712, 718, 724, 730, 736, 737, 744, 750, 752, 762, - 769, 780, 787, 795, 796, 803, 810, 814, 819, 829, - 833, 837, 849, 849, 851, 852, 861, 862, 864, 878, - 890, 895, 899, 903, 908, 909, 911, 921, 922, 924, - 926, 927, 929, 931, 932, 934, 939, 941, 942, 944, - 945, 947, 951, 956, 958, 959, 960, 964, 965, 967, - 968, 969, 970, 971, 972, 977, 981, 987, 988, 990, - 994, 999, 999, 1003, 1011, 1012, 1014, 1023, 1023, 1023, - 1023, 1023, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1027, 1027, 1031, 1031, 1033, 1034, 1035, 1036, 1037, - 1039, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1050, 1051, 1053, 1054, 1055, 1056, 1060, 1061, 1062, - 1063, 1065, 1066, 1068, 1069, 1071, 1072, 1073, 1074, 1075, - 1076, 1077, 1081, 1082, 1086, 1087, 1089, 1090, 1095, 1096, - 1097, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109, 1111, - 1113, 1115, 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124, - 1125, 1126, 1127, 1129, 1129, 1131, 1133, 1135, 1137, 1138, - 1139, 1140, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1144, - 1146, 1147, 1149, 1150, 1152, 1154, 1156, 1167, 1168, 1179, - 1211, 1220, 1220, 1227, 1227, 1229, 1229, 1236, 1240, 1245, - 1253, 1259, 1263, 1268, 1269, 1271, 1271, 1273, 1273, 1275, - 1276, 1278, 1278, 1284, 1285, 1287, 1291, 1296, 1302, 1309, - 1310, 1311, 1312, 1314, 1315, 1316, 1322, 1322, 1324, 1326, - 1330, 1335, 1345, 1352, 1360, 1369, 1370, 1371, 1372, 1373, - 1374, 1375, 1376, 1377, 1378, 1380, 1386, 1386, 1389, 1393 + 0, 336, 336, 355, 361, 368, 372, 376, 377, 378, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 395, 396, 398, 402, 407, 411, 421, 422, 423, 425, + 425, 431, 437, 439, 443, 455, 461, 486, 501, 503, + 504, 505, 507, 516, 520, 530, 534, 544, 548, 558, + 562, 572, 582, 605, 633, 634, 639, 650, 663, 675, + 682, 689, 698, 699, 701, 705, 710, 711, 713, 721, + 722, 723, 724, 725, 726, 727, 731, 732, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 743, 744, 746, + 747, 748, 750, 751, 753, 757, 761, 766, 774, 775, + 776, 777, 779, 780, 781, 783, 791, 797, 803, 809, + 815, 816, 823, 829, 831, 841, 848, 859, 866, 874, + 875, 882, 889, 893, 898, 908, 912, 916, 928, 928, + 930, 931, 940, 941, 943, 957, 969, 974, 978, 982, + 987, 988, 990, 1000, 1001, 1003, 1005, 1006, 1008, 1010, + 1011, 1013, 1018, 1020, 1021, 1023, 1024, 1026, 1030, 1035, + 1037, 1038, 1039, 1043, 1044, 1046, 1047, 1048, 1049, 1050, + 1051, 1056, 1060, 1066, 1067, 1069, 1073, 1078, 1078, 1082, + 1090, 1091, 1093, 1102, 1102, 1102, 1102, 1102, 1104, 1105, + 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106, 1110, + 1110, 1112, 1113, 1114, 1115, 1116, 1118, 1118, 1119, 1120, + 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1129, 1130, 1132, + 1133, 1134, 1135, 1139, 1140, 1141, 1142, 1144, 1145, 1147, + 1148, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1160, 1161, + 1165, 1166, 1168, 1169, 1174, 1175, 1176, 1180, 1181, 1182, + 1184, 1185, 1186, 1187, 1188, 1190, 1192, 1194, 1195, 1196, + 1197, 1198, 1199, 1201, 1202, 1203, 1204, 1205, 1206, 1208, + 1208, 1210, 1212, 1214, 1216, 1217, 1218, 1219, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1223, 1225, 1226, 1228, 1229, + 1231, 1233, 1235, 1246, 1247, 1258, 1290, 1299, 1299, 1306, + 1306, 1308, 1308, 1315, 1319, 1324, 1332, 1338, 1342, 1347, + 1348, 1350, 1350, 1352, 1352, 1354, 1355, 1357, 1357, 1363, + 1364, 1366, 1370, 1375, 1381, 1388, 1389, 1390, 1391, 1393, + 1394, 1395, 1401, 1401, 1403, 1405, 1409, 1414, 1424, 1431, + 1439, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, + 1457, 1459, 1465, 1465, 1468, 1472 }; #endif @@ -946,10 +949,10 @@ static const char *const yytname[] = "TRANSACTION", "BEGIN", "COMMIT", "ROLLBACK", "NOWAIT", "SKIP", "LOCKED", "SHARE", "RANGE", "ROWS", "GROUPS", "UNBOUNDED", "FOLLOWING", "PRECEDING", "CURRENT_ROW", "UNIQUE", "PRIMARY", "FOREIGN", "KEY", - "REFERENCES", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", - "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", - "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", - "'?'", "$accept", "input", "statement_list", "statement", + "REFERENCES", "DELIMITER", "QUOTE", "'='", "EQUALS", "NOTEQUALS", "'<'", + "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", + "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", + "';'", "','", "'?'", "$accept", "input", "statement_list", "statement", "preparable_statement", "opt_hints", "hint_list", "hint", "transaction_statement", "opt_transaction_keyword", "prepare_statement", "prepare_target_query", "execute_statement", "import_statement", @@ -996,12 +999,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-463) +#define YYPACT_NINF (-459) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-347) +#define YYTABLE_NINF (-353) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1010,70 +1013,72 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 659, 58, 86, 102, 234, 86, -14, 95, 181, 146, - 86, 227, 8, 36, 145, 277, 141, 141, 141, 323, - 161, -463, 224, -463, 224, -463, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -25, -463, 361, - 189, -463, 193, 280, -463, 264, 264, 264, 86, 403, - 86, 286, -463, 295, -25, 294, -32, 295, 295, 295, - 86, -463, 288, 229, -463, -463, -463, -463, -463, -463, - 642, -463, 332, -463, -463, 309, 77, -463, 158, -463, - 431, 19, 436, 314, 439, 86, 86, 365, -463, 357, - 258, 444, 409, 86, 262, 267, 461, 461, 461, 460, - 86, 86, -463, 274, 277, -463, 281, 467, 471, -463, - -463, -463, -25, 372, 363, -25, 191, -463, -463, -463, - 756, 297, 496, -463, 497, -463, -463, 38, -463, 308, - 306, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, -463, -463, 458, -463, 376, -33, 258, 364, - -463, 461, 505, 123, 335, -31, -463, -463, 419, -463, - -463, -463, -48, -48, -48, -463, -463, -463, -463, -463, - 508, -463, -463, -463, 364, 441, -463, -463, 77, -463, - -463, 364, 441, 364, 150, 393, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, 394, -463, 354, -463, -463, -463, 19, -463, 86, - 517, 410, 24, 397, 149, 331, 333, 334, 273, 384, - 337, 433, -463, 293, -42, 459, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, 427, -463, -17, 336, -463, 364, 444, -463, - 491, -463, -463, 338, 45, -463, 365, -463, 339, -7, - -463, 445, 341, -463, 47, 191, -25, 343, -463, 140, - 191, -42, 478, 104, 90, -463, 393, -463, 416, -463, - -463, 349, 450, -463, 732, 355, 379, 381, 87, -463, - -463, -463, 410, 17, 23, 489, 354, 364, 364, -39, - 73, 362, 433, 673, 364, 117, 367, -77, 364, 364, - 433, -463, 433, 131, 370, -8, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 467, 86, -463, 553, 19, -42, -463, 295, 45, - 554, 403, 96, -463, 19, -463, 508, 15, 365, -463, - 364, -463, 561, -463, -463, -463, -463, 364, -463, -463, - -463, 393, 364, 364, -463, 395, -463, 404, 128, -463, - 732, 505, 461, -463, -463, 378, -463, 380, -463, -463, - 382, -463, -463, 383, -463, -463, -463, -463, 385, -463, - -463, 119, 505, 388, 396, -463, 24, -463, 495, 364, - -463, -463, 392, 472, 200, 202, 137, 364, 364, -463, - 489, 473, 72, -463, -463, -463, 474, 602, 702, 433, - 398, 293, -463, 490, 402, 702, 702, 702, 702, 423, - 423, 423, 423, 117, 117, -79, -79, -79, -76, 405, - -463, -463, 130, 595, 152, -463, -463, -463, 201, 156, - -463, 410, -463, 9, -463, 406, -463, 51, -463, 530, - -463, -463, -463, -463, -42, -42, 540, -463, 505, -463, - 446, -463, 421, 162, -463, 607, 610, -463, 611, 614, - 615, -463, -463, 518, -463, 451, 86, -463, 119, -463, - -463, 168, 505, 505, -463, 432, -463, 169, -463, 364, - 732, 364, 364, -463, 194, 206, 430, -463, 433, 702, - 293, 434, 178, -463, -463, -463, -463, -463, 623, 403, - -463, 435, 531, -463, -463, -463, 560, 573, 574, 533, - 15, 636, -463, -463, -463, 527, -463, -463, 25, -463, - -463, -463, 464, 179, 465, 466, 468, -463, -463, 258, - -463, -463, -463, 185, 186, 549, 495, -53, 469, -42, - 215, -463, 364, -463, 673, 476, 198, -463, -463, -463, - -463, 51, 15, -463, -463, -463, 15, 148, 462, 364, - -463, -463, -463, 655, -463, -463, -463, -463, -463, 492, - 541, 441, -463, -463, -463, -463, -42, -463, -463, -463, - -463, 375, 505, -19, 477, -463, 364, 254, 475, 364, - 199, 364, -463, -463, 341, -463, -463, -463, 479, 34, - 505, -42, -463, -463, -42, -463, 100, 53, 147, -463, - -463, 208, -463, -463, 556, -463, -463, -463, 53, -463 + 614, 33, 71, 77, 86, 71, 155, -28, -1, 158, + 71, 191, 14, 213, 30, 135, 113, 113, 113, 275, + 149, -459, 196, -459, 196, -459, -459, -459, -459, -459, + -459, -459, -459, -459, -459, -459, -459, -17, -459, 346, + 168, -459, 162, 279, -459, 239, 239, 239, 71, 378, + 71, 263, -459, 283, -17, 288, 69, 283, 283, 283, + 71, -459, 300, 232, -459, -459, -459, -459, -459, -459, + 587, -459, 301, -459, -459, 332, 79, -459, 78, -459, + 454, 190, 459, 350, 470, 71, 71, 397, -459, 388, + 287, 480, 440, 71, 292, 293, 487, 487, 487, 491, + 71, 71, -459, 303, 135, -459, 304, 494, 492, -459, + -459, -459, -17, 390, 380, -17, 13, -459, -459, -459, + 701, 314, 506, -459, 507, -459, -459, 58, -459, 316, + 320, -459, -459, -459, -459, -459, -459, -459, -459, -459, + -459, -459, -459, -459, 476, -459, 393, -47, 287, 297, + -459, 487, 520, 12, 349, -44, -459, -459, 435, -459, + -459, -459, -63, -63, -63, -459, -459, -459, -459, -459, + 524, -459, -459, -459, 297, 456, -459, -459, 79, -459, + -459, 297, 456, 297, 49, 411, -459, -459, -459, -459, + -459, -459, -459, -459, -459, -459, -459, -459, -459, -459, + -459, 228, -459, 296, -459, -459, -459, 190, -459, 71, + 530, 421, 59, 412, 272, 343, 344, 345, 139, 308, + 348, 366, -459, 200, 152, 392, -459, -459, -459, -459, + -459, -459, -459, -459, -459, -459, -459, -459, -459, -459, + -459, -459, 444, -459, -6, 351, -459, 297, 480, -459, + 504, -459, -459, 352, 2, -459, 397, -459, 353, 111, + -459, 451, 356, -459, 42, 13, -17, 357, -459, 160, + 13, 152, 495, 137, 164, -459, 411, -459, 424, -459, + -459, 362, 458, -459, 652, 363, 387, 395, 198, -459, + -459, -459, 421, 16, 22, 502, 296, 297, 297, 252, + 187, 367, 366, 644, 297, 129, 368, -60, 297, 297, + 366, -459, 366, -36, 370, 151, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 494, 71, -459, 549, 190, 152, -459, 283, 2, + 569, 378, 570, 573, 582, 203, -459, 190, -459, 524, + 20, 397, -459, 297, -459, 585, -459, -459, -459, -459, + 297, -459, -459, -459, 411, 297, 297, -459, 418, -459, + 430, 10, -459, 652, 520, 487, -459, -459, 398, -459, + 400, -459, -459, 403, -459, -459, 404, -459, -459, -459, + -459, 405, -459, -459, 271, 520, 406, 409, -459, 59, + -459, 515, 297, -459, -459, 410, 511, 251, 66, 241, + 297, 297, -459, 502, 509, 63, -459, -459, -459, 496, + 610, 675, 366, 416, 200, -459, 503, 427, 675, 675, + 675, 675, 700, 700, 700, 700, 129, 129, 61, 61, + 61, -54, 428, -459, -459, 207, 620, 208, -459, -459, + -459, -459, -459, -459, 107, 212, -459, 421, -459, 436, + -459, 426, -459, 40, -459, 557, -459, -459, -459, -459, + 152, 152, 568, -459, 520, -459, 471, -459, 437, 221, + -459, 628, 632, -459, 636, 637, 638, -459, -459, 541, + -459, 474, 71, -459, 271, -459, -459, 223, 520, 520, + -459, 452, -459, 227, -459, 297, 652, 297, 297, -459, + 230, 199, 457, -459, 366, 675, 200, 460, 231, -459, + -459, -459, -459, -459, 646, 378, 653, 654, 655, -459, + 464, 562, -459, -459, -459, 584, 591, 592, 566, 20, + 645, -459, -459, -459, 545, -459, -459, 81, -459, -459, + -459, 477, 246, 479, 484, 490, -459, -459, 287, -459, + -459, -459, 254, 256, 567, 515, -55, 493, 152, 273, + -459, 297, -459, 644, 497, 265, -459, -459, -459, -459, + -459, -459, -459, 40, 20, -459, -459, -459, 20, 518, + 501, 297, -459, -459, -459, 682, -459, -459, -459, -459, + -459, 517, 565, 456, -459, -459, -459, -459, 152, -459, + -459, -459, -459, 537, 520, -20, 508, -459, 297, 315, + 512, 297, 269, 297, -459, -459, 356, -459, -459, -459, + 510, 23, 520, 152, -459, -459, 152, -459, 5, 15, + 120, -459, -459, 276, -459, -459, 576, -459, -459, -459, + 15, -459 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1081,108 +1086,110 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 347, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 326, 0, - 301, 110, 33, 0, 50, 57, 57, 57, 0, 0, - 0, 0, 300, 105, 0, 0, 0, 105, 105, 105, - 0, 48, 0, 328, 329, 29, 26, 28, 27, 1, - 327, 2, 0, 6, 5, 158, 119, 120, 150, 102, - 0, 168, 0, 0, 304, 0, 0, 144, 37, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 4, 0, 0, 138, 132, - 133, 131, 0, 135, 0, 0, 164, 302, 279, 282, - 284, 0, 0, 285, 0, 280, 281, 0, 290, 0, - 167, 169, 171, 173, 272, 273, 274, 283, 275, 276, - 277, 278, 32, 31, 0, 303, 0, 0, 114, 0, - 109, 0, 0, 0, 0, 144, 116, 104, 0, 127, - 126, 38, 41, 41, 41, 103, 100, 101, 331, 330, - 0, 284, 157, 137, 0, 150, 123, 122, 124, 134, - 130, 0, 150, 0, 0, 314, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 287, 0, 286, 289, 174, 175, 34, 0, 56, 0, - 0, 327, 0, 0, 268, 0, 0, 0, 0, 0, - 0, 0, 270, 0, 143, 177, 184, 185, 186, 179, - 181, 187, 180, 200, 188, 189, 190, 191, 183, 178, - 193, 194, 0, 348, 0, 0, 112, 0, 0, 115, - 0, 106, 107, 0, 0, 47, 144, 46, 24, 0, - 22, 141, 139, 165, 312, 164, 0, 149, 151, 156, - 164, 160, 162, 159, 0, 128, 313, 315, 0, 288, - 170, 0, 0, 53, 0, 0, 0, 0, 0, 58, - 60, 61, 327, 138, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 196, 0, 195, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 353, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 332, 0, + 307, 116, 33, 0, 56, 63, 63, 63, 0, 0, + 0, 0, 306, 111, 0, 0, 0, 111, 111, 111, + 0, 54, 0, 334, 335, 29, 26, 28, 27, 1, + 333, 2, 0, 6, 5, 164, 125, 126, 156, 108, + 0, 174, 0, 0, 310, 0, 0, 150, 37, 0, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 4, 0, 0, 144, 138, + 139, 137, 0, 141, 0, 0, 170, 308, 285, 288, + 290, 0, 0, 291, 0, 286, 287, 0, 296, 0, + 173, 175, 177, 179, 278, 279, 280, 289, 281, 282, + 283, 284, 32, 31, 0, 309, 0, 0, 120, 0, + 115, 0, 0, 0, 0, 150, 122, 110, 0, 133, + 132, 38, 41, 41, 41, 109, 106, 107, 337, 336, + 0, 290, 163, 143, 0, 156, 129, 128, 130, 140, + 136, 0, 156, 0, 0, 320, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 293, 0, 292, 295, 180, 181, 34, 0, 62, 0, + 0, 333, 0, 0, 274, 0, 0, 0, 0, 0, + 0, 0, 276, 0, 149, 183, 190, 191, 192, 185, + 187, 193, 186, 206, 194, 195, 196, 197, 189, 184, + 199, 200, 0, 354, 0, 0, 118, 0, 0, 121, + 0, 112, 113, 0, 0, 53, 150, 52, 24, 0, + 22, 147, 145, 171, 318, 170, 0, 155, 157, 162, + 170, 166, 168, 165, 0, 134, 319, 321, 0, 294, + 176, 0, 0, 59, 0, 0, 0, 0, 0, 64, + 66, 67, 333, 144, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 202, 0, 201, 0, 0, 0, 0, + 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 113, 0, 0, 118, 117, 105, 0, - 0, 0, 0, 36, 0, 20, 0, 0, 144, 140, - 0, 310, 0, 311, 176, 121, 125, 0, 155, 154, - 153, 314, 0, 0, 319, 0, 321, 0, 325, 316, - 0, 0, 0, 79, 73, 0, 75, 85, 76, 63, - 0, 70, 71, 0, 67, 68, 74, 77, 82, 72, - 64, 87, 0, 0, 0, 52, 0, 55, 235, 0, - 269, 271, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 192, 182, 211, 212, 0, 207, 0, - 0, 0, 198, 0, 210, 209, 225, 226, 227, 228, - 229, 230, 231, 202, 201, 204, 203, 205, 206, 0, - 35, 349, 0, 0, 0, 45, 43, 40, 0, 0, - 23, 327, 142, 291, 293, 0, 295, 308, 294, 146, - 166, 309, 152, 129, 163, 161, 0, 322, 0, 324, - 0, 317, 0, 0, 51, 0, 0, 69, 0, 0, - 0, 78, 94, 0, 93, 0, 0, 62, 86, 88, - 90, 0, 0, 0, 59, 0, 232, 0, 223, 0, - 0, 0, 0, 217, 0, 0, 0, 265, 0, 208, - 0, 0, 0, 199, 266, 111, 108, 39, 0, 0, - 25, 0, 0, 343, 335, 341, 339, 342, 337, 0, - 0, 0, 307, 299, 305, 0, 136, 320, 325, 323, - 172, 54, 0, 0, 0, 0, 0, 95, 92, 114, - 89, 91, 97, 0, 0, 237, 235, 0, 0, 221, - 0, 220, 0, 224, 267, 0, 0, 215, 213, 44, - 42, 308, 0, 338, 340, 336, 0, 292, 309, 0, - 318, 66, 84, 0, 80, 65, 81, 99, 96, 0, - 0, 150, 233, 249, 250, 218, 222, 216, 214, 296, - 332, 344, 0, 148, 0, 98, 0, 240, 0, 0, - 0, 0, 145, 83, 236, 241, 242, 243, 0, 0, - 0, 345, 333, 306, 147, 234, 0, 0, 0, 248, - 238, 0, 247, 245, 0, 246, 244, 334, 0, 239 + 0, 0, 0, 119, 0, 0, 124, 123, 111, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 20, 0, + 0, 150, 146, 0, 316, 0, 317, 182, 127, 131, + 0, 161, 160, 159, 320, 0, 0, 325, 0, 327, + 0, 331, 322, 0, 0, 0, 85, 79, 0, 81, + 91, 82, 69, 0, 76, 77, 0, 73, 74, 80, + 83, 88, 78, 70, 93, 0, 0, 0, 58, 0, + 61, 241, 0, 275, 277, 0, 0, 0, 0, 0, + 0, 0, 225, 0, 0, 0, 198, 188, 217, 218, + 0, 213, 0, 0, 0, 204, 0, 216, 215, 231, + 232, 233, 234, 235, 236, 237, 208, 207, 210, 209, + 211, 212, 0, 35, 355, 0, 0, 0, 45, 43, + 49, 47, 51, 40, 0, 0, 23, 333, 148, 297, + 299, 0, 301, 314, 300, 152, 172, 315, 158, 135, + 169, 167, 0, 328, 0, 330, 0, 323, 0, 0, + 57, 0, 0, 75, 0, 0, 0, 84, 100, 0, + 99, 0, 0, 68, 92, 94, 96, 0, 0, 0, + 65, 0, 238, 0, 229, 0, 0, 0, 0, 223, + 0, 0, 0, 271, 0, 214, 0, 0, 0, 205, + 272, 117, 114, 39, 0, 0, 0, 0, 0, 25, + 0, 0, 349, 341, 347, 345, 348, 343, 0, 0, + 0, 313, 305, 311, 0, 142, 326, 331, 329, 178, + 60, 0, 0, 0, 0, 0, 101, 98, 120, 95, + 97, 103, 0, 0, 243, 241, 0, 0, 227, 0, + 226, 0, 230, 273, 0, 0, 221, 219, 44, 42, + 48, 46, 50, 314, 0, 344, 346, 342, 0, 298, + 315, 0, 324, 72, 90, 0, 86, 71, 87, 105, + 102, 0, 0, 156, 239, 255, 256, 224, 228, 222, + 220, 302, 338, 350, 0, 154, 0, 104, 0, 246, + 0, 0, 0, 0, 151, 89, 242, 247, 248, 249, + 0, 0, 0, 351, 339, 312, 153, 240, 0, 0, + 0, 254, 244, 0, 253, 251, 0, 252, 250, 340, + 0, 245 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -463, -463, -463, 605, -463, 652, -463, 342, -463, 311, - -463, -463, -463, -463, -319, -81, 240, 345, -463, -463, - -463, 373, -463, 282, -463, -325, -463, -463, -463, -463, - 192, -463, -441, -463, -44, -463, -463, -463, -463, -463, - -463, -142, -463, -463, 429, -210, -84, -463, 41, -50, - -29, -463, -463, -74, 399, -463, -463, -463, -136, -463, - -463, -170, -463, 328, -463, -463, 3, -297, -463, -263, - 480, 488, 340, -147, -191, -463, -463, -463, -463, -463, - -463, 407, -463, -463, -463, 135, -463, -463, -463, -396, - -463, -463, -139, -463, -463, -463, -463, -463, -463, -61, - -463, -463, 566, -98, -463, -463, 570, -463, -463, -462, - 126, -463, -463, -463, -2, -463, -463, 134, 437, -463, - 347, -463, 426, -463, 171, -463, -463, -463, 606, -463, - -463, -463, -463, -350 + -459, -459, -459, 627, -459, 678, -459, 354, -459, 311, + -459, -459, -459, -459, -309, -78, 174, 360, -459, -459, + -459, 100, -459, 309, -459, -340, -459, -459, -459, -459, + 215, -459, -452, -459, -43, -459, -459, -459, -459, -459, + -459, -142, -459, -459, 462, -187, -85, -459, 32, -50, + -21, -459, -459, -77, 419, -459, -459, -459, -128, -459, + -459, -170, -459, 355, -459, -459, -48, -295, -459, -268, + 516, 513, 365, -147, -208, -459, -459, -459, -459, -459, + -459, 414, -459, -459, -459, 154, -459, -459, -459, -419, + -459, -459, -144, -459, -459, -459, -459, -459, -459, -74, + -459, -459, 589, -89, -459, -459, 595, -459, -459, -458, + 140, -459, -459, -459, -2, -459, -459, 142, 466, -459, + 364, -459, 461, -459, 185, -459, -459, -459, 629, -459, + -459, -459, -459, -373 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 19, 20, 21, 22, 73, 259, 260, 23, 66, - 24, 143, 25, 26, 89, 162, 255, 342, 27, 28, - 29, 84, 288, 289, 290, 391, 481, 477, 487, 488, - 489, 291, 490, 30, 93, 31, 251, 252, 32, 33, + 24, 143, 25, 26, 89, 162, 255, 345, 27, 28, + 29, 84, 288, 289, 290, 394, 487, 483, 493, 494, + 495, 291, 496, 30, 93, 31, 251, 252, 32, 33, 34, 153, 35, 155, 156, 36, 175, 176, 177, 77, - 112, 113, 180, 78, 174, 261, 348, 349, 150, 536, - 612, 116, 267, 268, 360, 108, 185, 262, 129, 130, + 112, 113, 180, 78, 174, 261, 351, 352, 150, 545, + 624, 116, 267, 268, 363, 108, 185, 262, 129, 130, 131, 132, 263, 264, 225, 226, 227, 228, 229, 230, - 231, 300, 232, 233, 234, 496, 591, 618, 619, 630, + 231, 300, 232, 233, 234, 502, 603, 630, 631, 642, 235, 236, 198, 199, 200, 237, 238, 239, 240, 241, - 134, 135, 136, 137, 138, 139, 140, 141, 452, 453, - 454, 455, 456, 51, 457, 146, 532, 533, 534, 354, - 275, 276, 277, 368, 471, 37, 38, 63, 64, 458, - 529, 622, 71, 244 + 134, 135, 136, 137, 138, 139, 140, 141, 458, 459, + 460, 461, 462, 51, 463, 146, 541, 542, 543, 357, + 275, 276, 277, 371, 477, 37, 38, 63, 64, 464, + 538, 634, 71, 244 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1190,192 +1197,190 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 41, 283, 224, 44, 95, 265, 213, 412, 52, 172, - 56, 40, 270, 99, 100, 101, 163, 164, 40, 249, - 133, 473, 446, 118, 119, 120, 400, 284, 303, 173, - 305, 182, 611, 75, 269, 522, 271, 273, 178, 308, - 626, 178, 491, 119, 120, 472, 87, 551, 90, 115, - 351, 627, 149, 55, 351, 309, 45, 316, 102, 626, - 316, 210, 97, 308, 279, 253, 46, 121, 577, 340, - 242, 299, 442, 298, 308, 523, 307, 308, 76, 309, - 524, 449, 397, 147, 148, 39, 109, 525, 526, 40, - 309, 158, 211, 309, 341, 94, 422, 47, 166, 167, - 336, 98, 497, 246, 527, 42, 57, 122, -344, 528, - 330, 303, 331, 423, 601, 331, 58, 414, 538, 417, - 343, 418, 110, 123, 512, 424, 425, 426, 427, 428, + 41, 479, 224, 44, 95, 265, 213, 133, 52, 415, + 56, 303, 270, 305, 99, 100, 101, 40, 172, 163, + 164, 638, 497, 40, 283, 403, 340, 249, 173, 638, + 182, 623, 449, 478, 269, 178, 271, 273, 178, 149, + 639, 75, 560, 354, 55, 354, 87, 210, 90, 60, + 253, 341, 214, 118, 119, 120, 308, 115, 102, 279, + 39, 308, 284, 119, 120, 422, 48, 445, 183, 76, + 75, 299, 309, 242, 40, 245, 307, 309, 211, 455, + 42, 589, 316, 147, 148, 184, 94, 109, 109, 43, + 61, 158, 423, 49, 303, 215, 216, 217, 166, 167, + 336, 547, 420, 246, 421, 400, 342, 503, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 133, 593, 553, 554, 168, 254, 133, 59, 605, 266, - 404, 405, 364, 214, 118, 119, 120, 403, 111, 363, - 212, 415, 416, 308, 60, 407, 248, 109, 54, 124, - 125, 126, 352, 306, 522, 558, 531, 333, 350, 309, - 334, 75, 356, 469, 470, 408, 245, 345, 124, 48, - 346, 409, 178, 285, 286, 287, 215, 216, 217, 628, - 570, 54, 629, 110, 127, 61, -297, 281, 451, 401, - 269, 398, 459, 566, 523, 464, 465, 128, 628, 524, - 308, 629, 334, 482, 365, 518, 525, 526, 509, 502, - 358, 634, 419, 439, 114, 218, 309, 43, 122, 111, - 483, 521, 639, 527, 50, 402, 183, -344, 528, 408, - 519, 366, 610, 316, 123, 503, 308, 359, 468, 420, - 504, 505, 367, 184, 507, 272, 632, 633, 355, 350, - 631, 219, 309, 361, 133, 49, 214, 118, 119, 120, - 62, 395, 603, 133, 396, 220, 469, 470, 484, 485, - 447, 474, 486, 448, 443, 65, 214, 118, 119, 120, - 124, 125, 126, 327, 328, 329, 330, 53, 331, 614, - 308, 501, 561, 635, 636, 562, 308, 564, 308, 215, - 216, 217, 308, 69, 515, 500, 309, 207, 67, 68, - 440, 308, 309, 595, 309, 221, 222, 72, 309, 215, - 216, 217, 293, 223, 294, -298, 517, 309, 128, 448, - 520, 75, 557, 207, 559, 560, 541, 70, 218, 334, - 506, 122, 552, 556, 79, 334, 350, 214, 118, 119, - 120, 511, 568, 582, 82, 350, 583, 123, 218, 588, - 589, 122, 334, 334, 80, 298, 81, 214, 118, 119, - 120, 83, 598, 623, 219, 350, 334, 123, 118, 119, - 120, 522, 637, 256, 257, 334, 88, 587, 220, 91, - 215, 216, 217, 103, 219, 596, 615, 616, 617, 85, - 86, 607, 92, 124, 125, 126, 104, 96, 220, 106, - 301, 216, 217, 107, 117, 144, 214, 118, 119, 120, - 142, 523, 145, 124, 125, 126, 524, 154, 149, 218, - 151, 152, 122, 525, 526, 157, 159, 608, 221, 222, - 565, 160, 621, 165, 624, 161, 223, 54, 123, 218, - 527, 128, 122, 171, 170, 528, 310, 311, 221, 222, - 216, 217, 122, 173, 549, 219, 223, 179, 123, 181, - 201, 128, 186, 187, 188, 189, 190, 191, 123, 220, - 202, 203, 206, 207, 208, 302, 609, 209, 243, 247, - 250, 258, 274, 311, 124, 125, 126, 114, 218, 220, - 282, 122, 292, 15, 295, 332, 296, 297, 304, 335, - 338, 339, 344, 362, 124, 125, 126, 123, 350, 347, - 357, 370, 371, 372, 124, 125, 126, 75, 392, 221, - 222, 393, 315, 394, 302, 410, 441, 223, 445, 316, - 312, 413, 128, 421, 461, 467, 499, 466, 220, 221, - 222, 475, 495, 476, 419, 478, 479, 223, 480, 127, - 313, 492, 128, 124, 125, 126, 498, 314, 315, 493, - 308, 510, 128, 331, 513, 316, 317, 514, 516, 535, - -347, -347, 537, 530, -347, -347, 539, 325, 326, 327, - 328, 329, 330, 542, 331, 540, 543, 544, 221, 222, - 545, 546, 547, 548, 563, 555, 223, 569, 567, 571, - 572, 128, 576, 318, 319, 320, 321, 322, 573, 578, - 323, 324, -346, 325, 326, 327, 328, 329, 330, 1, - 331, 574, 575, 579, 590, 602, 311, 2, 581, 584, - 585, 604, 586, 594, 3, 486, 1, 606, 620, 4, - 597, 613, 638, 625, 2, 105, 74, 337, 494, 5, - 550, 3, 6, 7, 444, 462, 4, 280, 450, 278, - 460, 592, 399, 204, 8, 9, 5, 205, 600, 6, - 7, 353, 369, 312, 10, 599, 406, 11, 463, 580, - 169, 8, 9, 0, 0, 0, 0, 0, 508, 0, - 0, 10, 0, 411, 11, 0, 0, 311, 0, 12, - 0, 315, 0, 13, 0, 0, 0, 0, 316, 317, - 0, 0, 0, 373, 0, 0, 12, 0, 0, 14, - 13, 0, 0, 0, 0, 15, 311, 374, 0, 0, - 0, 375, 376, 377, 378, 379, 14, 380, 0, 0, - 0, 0, 15, 0, 312, 381, 318, 319, 320, 321, + 439, 440, 441, 110, 110, 562, 563, 133, 346, 518, + 613, 524, 254, 133, 218, 168, 417, 122, 62, 331, + 474, 605, 214, 118, 119, 120, 85, 86, 212, 617, + 407, 408, 406, 123, 114, 248, 525, 266, 308, 111, + 111, 418, 419, 97, 272, 540, 567, 355, 475, 476, + 219, 644, 645, 306, 309, 507, 343, 344, 54, 353, + 640, 359, 308, 641, 220, 215, 216, 217, 640, 178, + 333, 641, 366, 334, 118, 119, 120, 316, 309, 124, + 125, 126, 98, 214, 118, 119, 120, 281, 124, 54, + 404, 526, 401, 269, 515, 457, 579, 358, 470, 471, + 646, 575, 364, 465, 218, 45, 367, 122, 285, 286, + 287, 651, 118, 119, 120, 46, 221, 222, 121, 475, + 476, 622, 442, 123, 223, 405, 215, 216, 217, 128, + 361, 298, 330, 308, 331, 425, 50, 513, 75, 643, + 219, 133, 353, 510, 511, 316, 47, 65, 308, 309, + 530, 53, 426, 133, 220, 69, 308, 362, 122, 410, + 334, 527, 528, 57, 309, 218, 647, 648, 122, 124, + 125, 126, 309, 58, 123, 446, 615, 480, 368, 411, + 214, 118, 119, 120, 123, 412, 573, 348, 571, 72, + 349, 214, 118, 119, 120, 308, 122, 327, 328, 329, + 330, 219, 331, 626, 59, 369, 221, 222, 67, 68, + 443, 309, 123, 508, 223, 220, 370, 256, 257, 128, + 124, 125, 126, 215, 216, 217, 308, 70, 570, 79, + 124, 125, 126, 411, 301, 216, 217, 81, 566, 509, + 568, 569, 309, 512, 298, 80, 83, 308, 308, 214, + 118, 119, 120, 82, 517, 488, 506, 127, 124, 125, + 126, 88, 218, 309, 309, 122, 91, 221, 222, 308, + 128, 607, 489, 218, 398, 223, 122, 399, 106, 453, + 128, 123, 454, 521, 523, 309, 207, 454, 529, 310, + 92, 207, 123, 216, 217, 127, 599, 550, 219, 561, + 334, 96, 334, 565, 608, 103, 353, 577, 128, 302, + 353, 104, 220, 619, 186, 187, 188, 189, 190, 191, + 490, 491, 594, 220, 492, 595, 311, 124, 125, 126, + 600, 218, 601, 334, 122, 334, 107, 117, 124, 125, + 126, 610, 531, 142, 353, 635, 574, 293, 334, 294, + 123, 144, 649, 145, 633, 334, 636, 627, 628, 629, + 149, 151, 152, 154, 221, 222, 157, 302, 159, 160, + 558, 161, 223, 312, 165, 221, 222, 128, 54, 170, + 171, 220, 532, 223, 173, 179, 181, 533, 128, 201, + 202, 203, 206, 313, 534, 535, 124, 125, 126, 207, + 314, 315, 208, 243, 209, 247, 250, 258, 316, 317, + 274, 536, 114, 282, 15, -350, 537, 292, 295, 296, + 297, 304, 332, 338, 531, 350, 335, 339, 347, 373, + 365, 375, 444, 221, 222, 353, 360, 374, 395, 396, + 75, 223, 413, 531, 416, 424, 128, 397, 318, 319, + 320, 321, 322, 448, 450, 323, 324, 451, 325, 326, + 327, 328, 329, 330, 532, 331, 452, -352, 467, 533, + 472, 473, 501, 481, 1, 482, 534, 535, 484, 485, + 486, 498, 2, 532, 499, 505, 504, 519, 533, 3, + 422, 516, 308, 536, 4, 534, 535, -350, 537, 620, + 331, 1, 520, 522, 5, 539, 544, 6, 7, 2, + 546, 548, 536, 549, 551, -303, 3, 537, 552, 8, + 9, 4, 553, 554, 555, 556, 557, 564, 590, 10, + 578, 5, 11, 572, 6, 7, 576, 580, 581, 582, + 583, 584, 585, 376, 311, 588, 8, 9, 621, 586, + 587, 591, 602, 593, 12, 596, 10, 377, 13, 11, + 597, 378, 379, 380, 381, 382, 598, 383, 616, 606, + 492, 618, 650, 609, 14, 384, 614, 105, 311, 447, + 15, 12, 74, 456, 625, 13, 637, 632, 500, 559, + 337, 312, 402, 409, 278, 468, 204, -304, 466, 604, + 385, 14, 205, 280, 612, 611, 514, 15, 469, 311, + 356, 414, 592, 169, 0, 0, 0, 372, 386, 315, + 387, 388, 16, 17, 18, 312, 316, 317, 0, 0, + 0, 0, 0, 0, 311, 389, 0, 0, 0, 0, + 390, 0, 391, 0, 0, 414, 0, 0, 0, 16, + 17, 18, 392, 315, 0, 0, -353, 0, 0, 0, + 316, 317, 0, 0, 0, 0, 318, 319, 320, 321, 322, 0, 0, 323, 324, 0, 325, 326, 327, 328, - 329, 330, 0, 331, 411, 0, 0, 16, 17, 18, - 382, 0, 315, -347, 0, 0, 0, 0, 0, 316, - 317, 0, 0, 0, 16, 17, 18, 0, 383, 0, - 384, 385, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 315, 0, 0, 0, 386, 0, 0, 316, -347, - 387, 0, 388, 0, 0, 0, 0, 318, 319, 320, - 321, 322, 389, 0, 323, 324, 0, 325, 326, 327, - 328, 329, 330, 0, 331, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -347, -347, -347, 321, - 322, 0, 0, 323, 324, 390, 325, 326, 327, 328, - 329, 330, 0, 331, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197 + 329, 330, 0, 331, 315, 393, 0, 0, 0, 0, + 0, 316, -353, 0, 0, 0, 0, 0, 0, 0, + 318, 319, 320, 321, 322, 0, 0, 323, 324, 315, + 325, 326, 327, 328, 329, 330, 316, 331, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, -353, -353, -353, 321, 322, 0, 0, 323, 324, + 0, 325, 326, 327, 328, 329, 330, 0, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -353, + -353, 0, 0, -353, -353, 0, 325, 326, 327, 328, + 329, 330, 0, 331 }; static const yytype_int16 yycheck[] = { - 2, 211, 149, 5, 54, 175, 148, 304, 10, 107, - 12, 3, 182, 57, 58, 59, 97, 98, 3, 155, - 81, 371, 341, 4, 5, 6, 3, 3, 219, 12, - 221, 115, 51, 58, 181, 26, 183, 184, 112, 116, - 6, 115, 392, 5, 6, 370, 48, 488, 50, 78, - 3, 17, 83, 12, 3, 132, 70, 136, 60, 6, - 136, 94, 94, 116, 203, 113, 80, 48, 530, 24, - 151, 218, 335, 112, 116, 66, 223, 116, 37, 132, - 71, 344, 292, 85, 86, 27, 9, 78, 79, 3, - 132, 93, 125, 132, 49, 54, 104, 111, 100, 101, - 247, 133, 399, 153, 95, 3, 70, 88, 99, 100, - 189, 302, 191, 121, 576, 191, 80, 194, 468, 310, - 256, 312, 45, 104, 421, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 201, 194, 492, 493, 103, 193, 207, 111, 589, 178, - 297, 298, 62, 3, 4, 5, 6, 296, 81, 55, - 193, 308, 309, 116, 19, 92, 197, 9, 193, 150, - 151, 152, 125, 223, 26, 500, 125, 194, 197, 132, - 197, 58, 266, 158, 159, 112, 63, 194, 150, 94, - 197, 118, 266, 169, 170, 171, 46, 47, 48, 165, - 519, 193, 168, 45, 185, 60, 197, 209, 193, 186, - 357, 194, 348, 510, 66, 362, 363, 198, 165, 71, - 116, 168, 197, 104, 134, 24, 78, 79, 419, 92, - 90, 627, 101, 331, 76, 85, 132, 3, 88, 81, - 121, 451, 638, 95, 98, 295, 55, 99, 100, 112, - 49, 161, 602, 136, 104, 118, 116, 117, 130, 128, - 407, 408, 172, 72, 192, 115, 166, 167, 265, 197, - 620, 121, 132, 270, 335, 94, 3, 4, 5, 6, - 3, 194, 579, 344, 197, 135, 158, 159, 169, 170, - 194, 372, 173, 197, 338, 154, 3, 4, 5, 6, - 150, 151, 152, 186, 187, 188, 189, 80, 191, 606, - 116, 109, 118, 166, 167, 109, 116, 508, 116, 46, - 47, 48, 116, 0, 194, 125, 132, 197, 17, 18, - 332, 116, 132, 118, 132, 185, 186, 113, 132, 46, - 47, 48, 193, 193, 195, 197, 194, 132, 198, 197, - 194, 58, 499, 197, 501, 502, 194, 196, 85, 197, - 410, 88, 194, 194, 3, 197, 197, 3, 4, 5, - 6, 421, 194, 194, 94, 197, 197, 104, 85, 194, - 194, 88, 197, 197, 195, 112, 193, 3, 4, 5, - 6, 127, 194, 194, 121, 197, 197, 104, 4, 5, - 6, 26, 194, 163, 164, 197, 3, 549, 135, 123, - 46, 47, 48, 125, 121, 562, 162, 163, 164, 46, - 47, 591, 127, 150, 151, 152, 197, 133, 135, 97, - 46, 47, 48, 124, 3, 121, 3, 4, 5, 6, - 4, 66, 3, 150, 151, 152, 71, 3, 83, 85, - 93, 193, 88, 78, 79, 46, 194, 82, 185, 186, - 510, 194, 609, 3, 611, 4, 193, 193, 104, 85, - 95, 198, 88, 6, 193, 100, 17, 54, 185, 186, - 47, 48, 88, 12, 486, 121, 193, 115, 104, 126, - 193, 198, 138, 139, 140, 141, 142, 143, 104, 135, - 4, 4, 194, 197, 46, 121, 131, 131, 3, 174, - 91, 3, 119, 54, 150, 151, 152, 76, 85, 135, - 3, 88, 125, 113, 193, 98, 193, 193, 191, 193, - 39, 193, 193, 55, 150, 151, 152, 104, 197, 94, - 197, 125, 193, 93, 150, 151, 152, 58, 193, 185, - 186, 172, 129, 172, 121, 193, 3, 193, 4, 136, - 101, 194, 198, 193, 3, 161, 94, 172, 135, 185, - 186, 193, 77, 193, 101, 193, 193, 193, 193, 185, - 121, 193, 198, 150, 151, 152, 194, 128, 129, 193, - 116, 193, 198, 191, 104, 136, 137, 192, 3, 69, - 177, 178, 62, 197, 181, 182, 160, 184, 185, 186, - 187, 188, 189, 6, 191, 194, 6, 6, 185, 186, - 6, 6, 104, 172, 194, 193, 193, 4, 194, 194, - 99, 198, 99, 174, 175, 176, 177, 178, 78, 3, - 181, 182, 0, 184, 185, 186, 187, 188, 189, 7, - 191, 78, 78, 126, 105, 193, 54, 15, 194, 194, - 194, 6, 194, 194, 22, 173, 7, 126, 193, 27, - 194, 194, 116, 194, 15, 70, 24, 248, 396, 37, - 488, 22, 40, 41, 339, 357, 27, 207, 346, 201, - 350, 556, 293, 127, 52, 53, 37, 127, 572, 40, - 41, 264, 276, 101, 62, 571, 299, 65, 361, 538, - 104, 52, 53, -1, -1, -1, -1, -1, 116, -1, - -1, 62, -1, 121, 65, -1, -1, 54, -1, 87, - -1, 129, -1, 91, -1, -1, -1, -1, 136, 137, - -1, -1, -1, 11, -1, -1, 87, -1, -1, 107, - 91, -1, -1, -1, -1, 113, 54, 25, -1, -1, - -1, 29, 30, 31, 32, 33, 107, 35, -1, -1, - -1, -1, 113, -1, 101, 43, 174, 175, 176, 177, - 178, -1, -1, 181, 182, -1, 184, 185, 186, 187, - 188, 189, -1, 191, 121, -1, -1, 155, 156, 157, - 68, -1, 129, 101, -1, -1, -1, -1, -1, 136, - 137, -1, -1, -1, 155, 156, 157, -1, 86, -1, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 129, -1, -1, -1, 103, -1, -1, 136, 137, - 108, -1, 110, -1, -1, -1, -1, 174, 175, 176, - 177, 178, 120, -1, 181, 182, -1, 184, 185, 186, - 187, 188, 189, -1, 191, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 153, 184, 185, 186, 187, - 188, 189, -1, 191, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149 + 2, 374, 149, 5, 54, 175, 148, 81, 10, 304, + 12, 219, 182, 221, 57, 58, 59, 3, 107, 97, + 98, 6, 395, 3, 211, 3, 24, 155, 12, 6, + 115, 51, 341, 373, 181, 112, 183, 184, 115, 83, + 17, 58, 494, 3, 12, 3, 48, 94, 50, 19, + 113, 49, 3, 4, 5, 6, 116, 78, 60, 203, + 27, 116, 3, 5, 6, 101, 94, 335, 55, 37, + 58, 218, 132, 151, 3, 63, 223, 132, 125, 347, + 3, 539, 136, 85, 86, 72, 54, 9, 9, 3, + 60, 93, 128, 94, 302, 46, 47, 48, 100, 101, + 247, 474, 310, 153, 312, 292, 104, 402, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 45, 45, 498, 499, 201, 256, 424, + 588, 24, 195, 207, 85, 103, 196, 88, 3, 193, + 130, 196, 3, 4, 5, 6, 46, 47, 195, 601, + 297, 298, 296, 104, 76, 199, 49, 178, 116, 81, + 81, 308, 309, 94, 115, 125, 506, 125, 158, 159, + 121, 166, 167, 223, 132, 109, 174, 175, 195, 199, + 165, 266, 116, 168, 135, 46, 47, 48, 165, 266, + 196, 168, 55, 199, 4, 5, 6, 136, 132, 150, + 151, 152, 133, 3, 4, 5, 6, 209, 150, 195, + 188, 104, 196, 360, 422, 195, 525, 265, 365, 366, + 639, 516, 270, 351, 85, 70, 62, 88, 169, 170, + 171, 650, 4, 5, 6, 80, 187, 188, 48, 158, + 159, 614, 331, 104, 195, 295, 46, 47, 48, 200, + 90, 112, 191, 116, 193, 104, 98, 194, 58, 632, + 121, 335, 199, 410, 411, 136, 111, 154, 116, 132, + 457, 80, 121, 347, 135, 0, 116, 117, 88, 92, + 199, 174, 175, 70, 132, 85, 166, 167, 88, 150, + 151, 152, 132, 80, 104, 338, 591, 375, 134, 112, + 3, 4, 5, 6, 104, 118, 514, 196, 109, 113, + 199, 3, 4, 5, 6, 116, 88, 188, 189, 190, + 191, 121, 193, 618, 111, 161, 187, 188, 17, 18, + 332, 132, 104, 92, 195, 135, 172, 163, 164, 200, + 150, 151, 152, 46, 47, 48, 116, 198, 118, 3, + 150, 151, 152, 112, 46, 47, 48, 195, 505, 118, + 507, 508, 132, 413, 112, 197, 127, 116, 116, 3, + 4, 5, 6, 94, 424, 104, 125, 187, 150, 151, + 152, 3, 85, 132, 132, 88, 123, 187, 188, 116, + 200, 118, 121, 85, 196, 195, 88, 199, 97, 196, + 200, 104, 199, 196, 196, 132, 199, 199, 196, 17, + 127, 199, 104, 47, 48, 187, 558, 196, 121, 196, + 199, 133, 199, 196, 571, 125, 199, 196, 200, 121, + 199, 199, 135, 603, 138, 139, 140, 141, 142, 143, + 169, 170, 196, 135, 173, 199, 54, 150, 151, 152, + 196, 85, 196, 199, 88, 199, 124, 3, 150, 151, + 152, 196, 26, 4, 199, 196, 516, 195, 199, 197, + 104, 121, 196, 3, 621, 199, 623, 162, 163, 164, + 83, 93, 195, 3, 187, 188, 46, 121, 196, 196, + 492, 4, 195, 101, 3, 187, 188, 200, 195, 195, + 6, 135, 66, 195, 12, 115, 126, 71, 200, 195, + 4, 4, 196, 121, 78, 79, 150, 151, 152, 199, + 128, 129, 46, 3, 131, 176, 91, 3, 136, 137, + 119, 95, 76, 3, 113, 99, 100, 125, 195, 195, + 195, 193, 98, 39, 26, 94, 195, 195, 195, 125, + 55, 93, 3, 187, 188, 199, 199, 195, 195, 172, + 58, 195, 195, 26, 196, 195, 200, 172, 176, 177, + 178, 179, 180, 4, 4, 183, 184, 4, 186, 187, + 188, 189, 190, 191, 66, 193, 4, 0, 3, 71, + 172, 161, 77, 195, 7, 195, 78, 79, 195, 195, + 195, 195, 15, 66, 195, 94, 196, 104, 71, 22, + 101, 195, 116, 95, 27, 78, 79, 99, 100, 82, + 193, 7, 194, 3, 37, 199, 69, 40, 41, 15, + 62, 160, 95, 196, 6, 199, 22, 100, 6, 52, + 53, 27, 6, 6, 6, 104, 172, 195, 3, 62, + 4, 37, 65, 196, 40, 41, 196, 4, 4, 4, + 196, 99, 78, 11, 54, 99, 52, 53, 131, 78, + 78, 126, 105, 196, 87, 196, 62, 25, 91, 65, + 196, 29, 30, 31, 32, 33, 196, 35, 6, 196, + 173, 126, 116, 196, 107, 43, 195, 70, 54, 339, + 113, 87, 24, 349, 196, 91, 196, 195, 399, 494, + 248, 101, 293, 299, 201, 360, 127, 199, 353, 565, + 68, 107, 127, 207, 584, 583, 116, 113, 364, 54, + 264, 121, 547, 104, -1, -1, -1, 276, 86, 129, + 88, 89, 155, 156, 157, 101, 136, 137, -1, -1, + -1, -1, -1, -1, 54, 103, -1, -1, -1, -1, + 108, -1, 110, -1, -1, 121, -1, -1, -1, 155, + 156, 157, 120, 129, -1, -1, 101, -1, -1, -1, + 136, 137, -1, -1, -1, -1, 176, 177, 178, 179, + 180, -1, -1, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, 129, 153, -1, -1, -1, -1, + -1, 136, 137, -1, -1, -1, -1, -1, -1, -1, + 176, 177, 178, 179, 180, -1, -1, 183, 184, 129, + 186, 187, 188, 189, 190, 191, 136, 193, -1, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 176, 177, 178, 179, 180, -1, -1, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, + 180, -1, -1, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1383,109 +1388,112 @@ static const yytype_int16 yycheck[] = static const yytype_int16 yystos[] = { 0, 7, 15, 22, 27, 37, 40, 41, 52, 53, - 62, 65, 87, 91, 107, 113, 155, 156, 157, 200, - 201, 202, 203, 207, 209, 211, 212, 217, 218, 219, - 232, 234, 237, 238, 239, 241, 244, 324, 325, 27, - 3, 313, 3, 3, 313, 70, 80, 111, 94, 94, - 98, 312, 313, 80, 193, 247, 313, 70, 80, 111, - 19, 60, 3, 326, 327, 154, 208, 208, 208, 0, - 196, 331, 113, 204, 204, 58, 247, 248, 252, 3, - 195, 193, 94, 127, 220, 220, 220, 313, 3, 213, - 313, 123, 127, 233, 247, 248, 133, 94, 133, 233, - 233, 233, 313, 125, 197, 202, 97, 124, 264, 9, - 45, 81, 249, 250, 76, 249, 260, 3, 4, 5, - 6, 48, 88, 104, 150, 151, 152, 185, 198, 267, - 268, 269, 270, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 4, 210, 121, 3, 314, 313, 313, 83, - 257, 93, 193, 240, 3, 242, 243, 46, 313, 194, - 194, 4, 214, 214, 214, 3, 313, 313, 247, 327, - 193, 6, 302, 12, 253, 245, 246, 247, 252, 115, - 251, 126, 245, 55, 72, 265, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 291, 292, - 293, 193, 4, 4, 301, 305, 194, 197, 46, 131, - 94, 125, 193, 240, 3, 46, 47, 48, 85, 121, - 135, 185, 186, 193, 272, 273, 274, 275, 276, 277, - 278, 279, 281, 282, 283, 289, 290, 294, 295, 296, - 297, 298, 214, 3, 332, 63, 248, 174, 197, 257, - 91, 235, 236, 113, 193, 215, 215, 215, 3, 205, - 206, 254, 266, 271, 272, 260, 249, 261, 262, 272, - 260, 272, 115, 272, 119, 319, 320, 321, 270, 291, - 269, 313, 3, 244, 3, 169, 170, 171, 221, 222, - 223, 230, 125, 193, 195, 193, 193, 193, 112, 272, - 280, 46, 121, 273, 191, 273, 248, 272, 116, 132, - 17, 54, 101, 121, 128, 129, 136, 137, 174, 175, - 176, 177, 178, 181, 182, 184, 185, 186, 187, 188, - 189, 191, 98, 194, 197, 193, 272, 243, 39, 193, - 24, 49, 216, 257, 193, 194, 197, 94, 255, 256, - 197, 3, 125, 317, 318, 265, 245, 197, 90, 117, - 263, 265, 55, 55, 62, 134, 161, 172, 322, 321, - 125, 193, 93, 11, 25, 29, 30, 31, 32, 33, - 35, 43, 68, 86, 88, 89, 103, 108, 110, 120, - 153, 224, 193, 172, 172, 194, 197, 244, 194, 253, - 3, 186, 248, 291, 272, 272, 280, 92, 112, 118, - 193, 121, 266, 194, 194, 272, 272, 273, 273, 101, - 128, 193, 104, 121, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 302, - 313, 3, 268, 233, 216, 4, 213, 194, 197, 268, - 206, 193, 307, 308, 309, 310, 311, 313, 328, 257, - 271, 3, 262, 319, 272, 272, 172, 161, 130, 158, - 159, 323, 224, 332, 214, 193, 193, 226, 193, 193, - 193, 225, 104, 121, 169, 170, 173, 227, 228, 229, - 231, 332, 193, 193, 222, 77, 284, 266, 194, 94, - 125, 109, 92, 118, 272, 272, 248, 192, 116, 273, - 193, 248, 266, 104, 192, 194, 3, 194, 24, 49, - 194, 244, 26, 66, 71, 78, 79, 95, 100, 329, - 197, 125, 315, 316, 317, 69, 258, 62, 332, 160, - 194, 194, 6, 6, 6, 6, 6, 104, 172, 313, - 229, 231, 194, 332, 332, 193, 194, 272, 224, 272, - 272, 118, 109, 194, 273, 248, 266, 194, 194, 4, - 213, 194, 99, 78, 78, 78, 99, 308, 3, 126, - 323, 194, 194, 197, 194, 194, 194, 240, 194, 194, - 105, 285, 284, 194, 194, 118, 272, 194, 194, 316, - 309, 308, 193, 266, 6, 231, 126, 260, 82, 131, - 332, 51, 259, 194, 266, 162, 163, 164, 286, 287, - 193, 272, 330, 194, 272, 194, 6, 17, 165, 168, - 288, 332, 166, 167, 288, 166, 167, 194, 116, 288 + 62, 65, 87, 91, 107, 113, 155, 156, 157, 202, + 203, 204, 205, 209, 211, 213, 214, 219, 220, 221, + 234, 236, 239, 240, 241, 243, 246, 326, 327, 27, + 3, 315, 3, 3, 315, 70, 80, 111, 94, 94, + 98, 314, 315, 80, 195, 249, 315, 70, 80, 111, + 19, 60, 3, 328, 329, 154, 210, 210, 210, 0, + 198, 333, 113, 206, 206, 58, 249, 250, 254, 3, + 197, 195, 94, 127, 222, 222, 222, 315, 3, 215, + 315, 123, 127, 235, 249, 250, 133, 94, 133, 235, + 235, 235, 315, 125, 199, 204, 97, 124, 266, 9, + 45, 81, 251, 252, 76, 251, 262, 3, 4, 5, + 6, 48, 88, 104, 150, 151, 152, 187, 200, 269, + 270, 271, 272, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 4, 212, 121, 3, 316, 315, 315, 83, + 259, 93, 195, 242, 3, 244, 245, 46, 315, 196, + 196, 4, 216, 216, 216, 3, 315, 315, 249, 329, + 195, 6, 304, 12, 255, 247, 248, 249, 254, 115, + 253, 126, 247, 55, 72, 267, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 293, 294, + 295, 195, 4, 4, 303, 307, 196, 199, 46, 131, + 94, 125, 195, 242, 3, 46, 47, 48, 85, 121, + 135, 187, 188, 195, 274, 275, 276, 277, 278, 279, + 280, 281, 283, 284, 285, 291, 292, 296, 297, 298, + 299, 300, 216, 3, 334, 63, 250, 176, 199, 259, + 91, 237, 238, 113, 195, 217, 217, 217, 3, 207, + 208, 256, 268, 273, 274, 262, 251, 263, 264, 274, + 262, 274, 115, 274, 119, 321, 322, 323, 272, 293, + 271, 315, 3, 246, 3, 169, 170, 171, 223, 224, + 225, 232, 125, 195, 197, 195, 195, 195, 112, 274, + 282, 46, 121, 275, 193, 275, 250, 274, 116, 132, + 17, 54, 101, 121, 128, 129, 136, 137, 176, 177, + 178, 179, 180, 183, 184, 186, 187, 188, 189, 190, + 191, 193, 98, 196, 199, 195, 274, 245, 39, 195, + 24, 49, 104, 174, 175, 218, 259, 195, 196, 199, + 94, 257, 258, 199, 3, 125, 319, 320, 267, 247, + 199, 90, 117, 265, 267, 55, 55, 62, 134, 161, + 172, 324, 323, 125, 195, 93, 11, 25, 29, 30, + 31, 32, 33, 35, 43, 68, 86, 88, 89, 103, + 108, 110, 120, 153, 226, 195, 172, 172, 196, 199, + 246, 196, 255, 3, 188, 250, 293, 274, 274, 282, + 92, 112, 118, 195, 121, 268, 196, 196, 274, 274, + 275, 275, 101, 128, 195, 104, 121, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 304, 315, 3, 270, 235, 218, 4, 215, + 4, 4, 4, 196, 199, 270, 208, 195, 309, 310, + 311, 312, 313, 315, 330, 259, 273, 3, 264, 321, + 274, 274, 172, 161, 130, 158, 159, 325, 226, 334, + 216, 195, 195, 228, 195, 195, 195, 227, 104, 121, + 169, 170, 173, 229, 230, 231, 233, 334, 195, 195, + 224, 77, 286, 268, 196, 94, 125, 109, 92, 118, + 274, 274, 250, 194, 116, 275, 195, 250, 268, 104, + 194, 196, 3, 196, 24, 49, 104, 174, 175, 196, + 246, 26, 66, 71, 78, 79, 95, 100, 331, 199, + 125, 317, 318, 319, 69, 260, 62, 334, 160, 196, + 196, 6, 6, 6, 6, 6, 104, 172, 315, 231, + 233, 196, 334, 334, 195, 196, 274, 226, 274, 274, + 118, 109, 196, 275, 250, 268, 196, 196, 4, 215, + 4, 4, 4, 196, 99, 78, 78, 78, 99, 310, + 3, 126, 325, 196, 196, 199, 196, 196, 196, 242, + 196, 196, 105, 287, 286, 196, 196, 118, 274, 196, + 196, 318, 311, 310, 195, 268, 6, 233, 126, 262, + 82, 131, 334, 51, 261, 196, 268, 162, 163, 164, + 288, 289, 195, 274, 332, 196, 274, 196, 6, 17, + 165, 168, 290, 334, 166, 167, 290, 166, 167, 196, + 116, 290 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 199, 200, 201, 201, 202, 202, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 207, 208, - 208, 209, 210, 211, 211, 212, 212, 213, 214, 215, - 215, 215, 216, 216, 216, 216, 217, 217, 218, 218, - 218, 219, 219, 219, 219, 219, 220, 220, 221, 221, - 222, 222, 223, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 225, 225, 226, 226, 226, 227, 227, 228, 228, - 228, 228, 229, 229, 229, 229, 230, 230, 230, 231, - 232, 232, 232, 232, 233, 233, 234, 235, 236, 237, - 238, 239, 239, 240, 240, 241, 242, 242, 243, 244, - 244, 244, 245, 245, 246, 246, 247, 247, 248, 248, - 249, 250, 250, 250, 251, 251, 252, 253, 253, 254, - 255, 255, 256, 257, 257, 258, 258, 259, 259, 260, - 260, 261, 261, 262, 263, 263, 263, 264, 264, 265, - 265, 265, 265, 265, 265, 266, 266, 267, 267, 268, - 268, 269, 269, 270, 270, 270, 271, 272, 272, 272, - 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 274, 274, 275, 275, 275, 275, 275, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 277, 277, 278, 278, 278, 278, 279, 279, 279, - 279, 280, 280, 281, 281, 282, 282, 282, 282, 282, - 282, 282, 283, 283, 284, 284, 285, 285, 286, 286, - 286, 287, 287, 287, 288, 288, 288, 288, 288, 289, - 290, 291, 291, 291, 291, 291, 291, 292, 292, 292, - 292, 292, 292, 293, 293, 294, 295, 296, 297, 297, - 297, 297, 298, 298, 298, 298, 298, 298, 298, 299, - 300, 300, 301, 301, 302, 303, 304, 305, 305, 305, - 306, 307, 307, 308, 308, 309, 309, 310, 310, 311, - 312, 313, 313, 314, 314, 315, 315, 316, 316, 317, - 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, - 322, 322, 322, 323, 323, 323, 324, 324, 325, 326, - 326, 327, 328, 328, 328, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 331, 331, 332, 332 + 0, 201, 202, 203, 203, 204, 204, 204, 204, 204, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 206, 206, 207, 207, 208, 208, 209, 209, 209, 210, + 210, 211, 212, 213, 213, 214, 214, 215, 216, 217, + 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 219, 219, 220, 220, 220, 221, 221, 221, + 221, 221, 222, 222, 223, 223, 224, 224, 225, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 227, 227, 228, + 228, 228, 229, 229, 230, 230, 230, 230, 231, 231, + 231, 231, 232, 232, 232, 233, 234, 234, 234, 234, + 235, 235, 236, 237, 238, 239, 240, 241, 241, 242, + 242, 243, 244, 244, 245, 246, 246, 246, 247, 247, + 248, 248, 249, 249, 250, 250, 251, 252, 252, 252, + 253, 253, 254, 255, 255, 256, 257, 257, 258, 259, + 259, 260, 260, 261, 261, 262, 262, 263, 263, 264, + 265, 265, 265, 266, 266, 267, 267, 267, 267, 267, + 267, 268, 268, 269, 269, 270, 270, 271, 271, 272, + 272, 272, 273, 274, 274, 274, 274, 274, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, + 276, 277, 277, 277, 277, 277, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 279, 279, 280, + 280, 280, 280, 281, 281, 281, 281, 282, 282, 283, + 283, 284, 284, 284, 284, 284, 284, 284, 285, 285, + 286, 286, 287, 287, 288, 288, 288, 289, 289, 289, + 290, 290, 290, 290, 290, 291, 292, 293, 293, 293, + 293, 293, 293, 294, 294, 294, 294, 294, 294, 295, + 295, 296, 297, 298, 299, 299, 299, 299, 300, 300, + 300, 300, 300, 300, 300, 301, 302, 302, 303, 303, + 304, 305, 306, 307, 307, 307, 308, 309, 309, 310, + 310, 311, 311, 312, 312, 313, 314, 315, 315, 316, + 316, 317, 317, 318, 318, 319, 319, 320, 320, 321, + 321, 322, 322, 323, 323, 324, 324, 324, 324, 325, + 325, 325, 326, 326, 327, 328, 328, 329, 330, 330, + 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 332, 333, 333, 334, 334 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1495,37 +1503,38 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 0, 1, 3, 1, 4, 2, 2, 2, 1, 0, 4, 1, 2, 5, 7, 6, 1, 1, 4, - 3, 0, 4, 2, 4, 2, 5, 5, 2, 3, - 2, 8, 7, 6, 9, 7, 3, 0, 1, 3, - 1, 1, 3, 1, 1, 4, 4, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 4, 3, 0, 5, 3, 0, 1, 0, 1, 2, - 1, 2, 2, 1, 1, 2, 5, 4, 6, 3, - 4, 4, 3, 4, 2, 0, 5, 1, 4, 4, - 2, 8, 5, 3, 0, 5, 1, 3, 3, 2, - 2, 6, 1, 1, 1, 3, 3, 3, 4, 6, - 2, 1, 1, 1, 1, 0, 7, 1, 0, 1, - 1, 0, 2, 2, 0, 4, 0, 2, 0, 3, - 0, 1, 3, 2, 1, 1, 0, 2, 0, 2, - 2, 4, 2, 4, 0, 1, 3, 1, 0, 1, - 3, 1, 6, 1, 2, 2, 2, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 1, 2, 2, 2, 3, 4, - 1, 3, 3, 3, 3, 3, 3, 3, 4, 3, - 3, 3, 3, 5, 6, 5, 6, 4, 6, 3, - 5, 4, 5, 4, 5, 3, 3, 3, 3, 3, - 3, 3, 4, 6, 6, 0, 3, 0, 2, 5, - 0, 1, 1, 1, 2, 2, 2, 2, 1, 6, - 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 4, 5, 1, 3, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, - 1, 1, 3, 1, 1, 1, 4, 1, 3, 2, - 1, 1, 3, 1, 0, 1, 5, 1, 0, 2, - 1, 1, 0, 1, 0, 1, 2, 3, 5, 1, - 3, 1, 2, 2, 1, 0, 1, 0, 2, 1, - 3, 3, 4, 6, 8, 1, 2, 1, 2, 1, - 2, 1, 1, 1, 0, 1, 1, 0, 1, 3 + 3, 0, 4, 2, 4, 2, 4, 2, 4, 2, + 4, 2, 5, 5, 2, 3, 2, 8, 7, 6, + 9, 7, 3, 0, 1, 3, 1, 1, 3, 1, + 1, 4, 4, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 4, 3, 0, 5, + 3, 0, 1, 0, 1, 2, 1, 2, 2, 1, + 1, 2, 5, 4, 6, 3, 4, 4, 3, 4, + 2, 0, 5, 1, 4, 4, 2, 8, 5, 3, + 0, 5, 1, 3, 3, 2, 2, 6, 1, 1, + 1, 3, 3, 3, 4, 6, 2, 1, 1, 1, + 1, 0, 7, 1, 0, 1, 1, 0, 2, 2, + 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, + 1, 1, 0, 2, 0, 2, 2, 4, 2, 4, + 0, 1, 3, 1, 0, 1, 3, 1, 6, 1, + 2, 2, 2, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 1, 2, 2, 2, 3, 4, 1, 3, 3, 3, + 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 5, 6, 4, 6, 3, 5, 4, 5, 4, + 5, 3, 3, 3, 3, 3, 3, 3, 4, 6, + 6, 0, 3, 0, 2, 5, 0, 1, 1, 1, + 2, 2, 2, 2, 1, 6, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 3, 2, 1, 1, 3, 1, + 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, + 0, 1, 5, 1, 0, 2, 1, 1, 0, 1, + 0, 1, 2, 3, 5, 1, 3, 1, 2, 2, + 1, 0, 1, 0, 2, 1, 3, 3, 4, 6, + 8, 1, 2, 1, 2, 1, 2, 1, 1, 1, + 0, 1, 1, 0, 1, 3 }; @@ -2091,25 +2100,25 @@ yydestruct (const char *yymsg, case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2095 "bison_parser.cpp" +#line 2104 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2101 "bison_parser.cpp" +#line 2110 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ #line 179 "bison_parser.y" { } -#line 2107 "bison_parser.cpp" +#line 2116 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ #line 179 "bison_parser.y" { } -#line 2113 "bison_parser.cpp" +#line 2122 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ @@ -2122,19 +2131,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2126 "bison_parser.cpp" +#line 2135 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2132 "bison_parser.cpp" +#line 2141 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2138 "bison_parser.cpp" +#line 2147 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ @@ -2147,7 +2156,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2151 "bison_parser.cpp" +#line 2160 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ @@ -2160,91 +2169,91 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2164 "bison_parser.cpp" +#line 2173 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2170 "bison_parser.cpp" +#line 2179 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2176 "bison_parser.cpp" +#line 2185 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2182 "bison_parser.cpp" +#line 2191 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2188 "bison_parser.cpp" +#line 2197 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2194 "bison_parser.cpp" +#line 2203 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2200 "bison_parser.cpp" +#line 2209 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ #line 179 "bison_parser.y" { } -#line 2206 "bison_parser.cpp" +#line 2215 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2212 "bison_parser.cpp" +#line 2221 "bison_parser.cpp" break; case YYSYMBOL_opt_import_export_options: /* opt_import_export_options */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2218 "bison_parser.cpp" +#line 2227 "bison_parser.cpp" break; case YYSYMBOL_import_export_options: /* import_export_options */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2224 "bison_parser.cpp" +#line 2233 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2230 "bison_parser.cpp" +#line 2239 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2236 "bison_parser.cpp" +#line 2245 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2242 "bison_parser.cpp" +#line 2251 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ #line 179 "bison_parser.y" { } -#line 2248 "bison_parser.cpp" +#line 2257 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ @@ -2257,115 +2266,115 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2261 "bison_parser.cpp" +#line 2270 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2267 "bison_parser.cpp" +#line 2276 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2273 "bison_parser.cpp" +#line 2282 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ #line 179 "bison_parser.y" { } -#line 2279 "bison_parser.cpp" +#line 2288 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ #line 179 "bison_parser.y" { } -#line 2285 "bison_parser.cpp" +#line 2294 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ #line 201 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2291 "bison_parser.cpp" +#line 2300 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2297 "bison_parser.cpp" +#line 2306 "bison_parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2303 "bison_parser.cpp" +#line 2312 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ #line 179 "bison_parser.y" { } -#line 2309 "bison_parser.cpp" +#line 2318 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2315 "bison_parser.cpp" +#line 2324 "bison_parser.cpp" break; case YYSYMBOL_references_spec: /* references_spec */ #line 201 "bison_parser.y" { delete (((*yyvaluep).references_spec_t)); } -#line 2321 "bison_parser.cpp" +#line 2330 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2327 "bison_parser.cpp" +#line 2336 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ #line 179 "bison_parser.y" { } -#line 2333 "bison_parser.cpp" +#line 2342 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2339 "bison_parser.cpp" +#line 2348 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2345 "bison_parser.cpp" +#line 2354 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ #line 201 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2351 "bison_parser.cpp" +#line 2360 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2357 "bison_parser.cpp" +#line 2366 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2363 "bison_parser.cpp" +#line 2372 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2369 "bison_parser.cpp" +#line 2378 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ @@ -2378,13 +2387,13 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2382 "bison_parser.cpp" +#line 2391 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2388 "bison_parser.cpp" +#line 2397 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ @@ -2397,73 +2406,73 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2401 "bison_parser.cpp" +#line 2410 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2407 "bison_parser.cpp" +#line 2416 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2413 "bison_parser.cpp" +#line 2422 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2419 "bison_parser.cpp" +#line 2428 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2425 "bison_parser.cpp" +#line 2434 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2431 "bison_parser.cpp" +#line 2440 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2437 "bison_parser.cpp" +#line 2446 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ #line 201 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2443 "bison_parser.cpp" +#line 2452 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ #line 201 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2449 "bison_parser.cpp" +#line 2458 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ #line 179 "bison_parser.y" { } -#line 2455 "bison_parser.cpp" +#line 2464 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2461 "bison_parser.cpp" +#line 2470 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ #line 179 "bison_parser.y" { } -#line 2467 "bison_parser.cpp" +#line 2476 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ @@ -2476,37 +2485,37 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2480 "bison_parser.cpp" +#line 2489 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2486 "bison_parser.cpp" +#line 2495 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2492 "bison_parser.cpp" +#line 2501 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2498 "bison_parser.cpp" +#line 2507 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ #line 201 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2504 "bison_parser.cpp" +#line 2513 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2510 "bison_parser.cpp" +#line 2519 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ @@ -2519,7 +2528,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2523 "bison_parser.cpp" +#line 2532 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ @@ -2532,31 +2541,31 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2536 "bison_parser.cpp" +#line 2545 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ #line 201 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2542 "bison_parser.cpp" +#line 2551 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ #line 179 "bison_parser.y" { } -#line 2548 "bison_parser.cpp" +#line 2557 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ #line 201 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2554 "bison_parser.cpp" +#line 2563 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ #line 201 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2560 "bison_parser.cpp" +#line 2569 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ @@ -2569,7 +2578,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2573 "bison_parser.cpp" +#line 2582 "bison_parser.cpp" break; case YYSYMBOL_opt_extended_literal_list: /* opt_extended_literal_list */ @@ -2582,7 +2591,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2586 "bison_parser.cpp" +#line 2595 "bison_parser.cpp" break; case YYSYMBOL_extended_literal_list: /* extended_literal_list */ @@ -2595,103 +2604,103 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2599 "bison_parser.cpp" +#line 2608 "bison_parser.cpp" break; case YYSYMBOL_casted_extended_literal: /* casted_extended_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2605 "bison_parser.cpp" +#line 2614 "bison_parser.cpp" break; case YYSYMBOL_extended_literal: /* extended_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2611 "bison_parser.cpp" +#line 2620 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2617 "bison_parser.cpp" +#line 2626 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2623 "bison_parser.cpp" +#line 2632 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2629 "bison_parser.cpp" +#line 2638 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2635 "bison_parser.cpp" +#line 2644 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2641 "bison_parser.cpp" +#line 2650 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2647 "bison_parser.cpp" +#line 2656 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2653 "bison_parser.cpp" +#line 2662 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2659 "bison_parser.cpp" +#line 2668 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2665 "bison_parser.cpp" +#line 2674 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2671 "bison_parser.cpp" +#line 2680 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2677 "bison_parser.cpp" +#line 2686 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2683 "bison_parser.cpp" +#line 2692 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2689 "bison_parser.cpp" +#line 2698 "bison_parser.cpp" break; case YYSYMBOL_opt_window: /* opt_window */ #line 201 "bison_parser.y" { delete (((*yyvaluep).window_description)); } -#line 2695 "bison_parser.cpp" +#line 2704 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ @@ -2704,151 +2713,151 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2708 "bison_parser.cpp" +#line 2717 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2714 "bison_parser.cpp" +#line 2723 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ #line 179 "bison_parser.y" { } -#line 2720 "bison_parser.cpp" +#line 2729 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ #line 201 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2726 "bison_parser.cpp" +#line 2735 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2732 "bison_parser.cpp" +#line 2741 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2738 "bison_parser.cpp" +#line 2747 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ #line 179 "bison_parser.y" { } -#line 2744 "bison_parser.cpp" +#line 2753 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ #line 179 "bison_parser.y" { } -#line 2750 "bison_parser.cpp" +#line 2759 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ #line 179 "bison_parser.y" { } -#line 2756 "bison_parser.cpp" +#line 2765 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2762 "bison_parser.cpp" +#line 2771 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2768 "bison_parser.cpp" +#line 2777 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2774 "bison_parser.cpp" +#line 2783 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2780 "bison_parser.cpp" +#line 2789 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2786 "bison_parser.cpp" +#line 2795 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2792 "bison_parser.cpp" +#line 2801 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2798 "bison_parser.cpp" +#line 2807 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2804 "bison_parser.cpp" +#line 2813 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2810 "bison_parser.cpp" +#line 2819 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2816 "bison_parser.cpp" +#line 2825 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2822 "bison_parser.cpp" +#line 2831 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2828 "bison_parser.cpp" +#line 2837 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2834 "bison_parser.cpp" +#line 2843 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2840 "bison_parser.cpp" +#line 2849 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2846 "bison_parser.cpp" +#line 2855 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2852 "bison_parser.cpp" +#line 2861 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ @@ -2861,19 +2870,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2865 "bison_parser.cpp" +#line 2874 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2871 "bison_parser.cpp" +#line 2880 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2877 "bison_parser.cpp" +#line 2886 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2882,109 +2891,109 @@ yydestruct (const char *yymsg, free(((*yyvaluep).table_name).name); free(((*yyvaluep).table_name).schema); } -#line 2886 "bison_parser.cpp" +#line 2895 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2892 "bison_parser.cpp" +#line 2901 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2898 "bison_parser.cpp" +#line 2907 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2904 "bison_parser.cpp" +#line 2913 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2910 "bison_parser.cpp" +#line 2919 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2916 "bison_parser.cpp" +#line 2925 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2922 "bison_parser.cpp" +#line 2931 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2928 "bison_parser.cpp" +#line 2937 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2934 "bison_parser.cpp" +#line 2943 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ #line 179 "bison_parser.y" { } -#line 2940 "bison_parser.cpp" +#line 2949 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ #line 179 "bison_parser.y" { } -#line 2946 "bison_parser.cpp" +#line 2955 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2952 "bison_parser.cpp" +#line 2961 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2958 "bison_parser.cpp" +#line 2967 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2964 "bison_parser.cpp" +#line 2973 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2970 "bison_parser.cpp" +#line 2979 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2976 "bison_parser.cpp" +#line 2985 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ #line 179 "bison_parser.y" { } -#line 2982 "bison_parser.cpp" +#line 2991 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2988 "bison_parser.cpp" +#line 2997 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ @@ -2997,7 +3006,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 3001 "bison_parser.cpp" +#line 3010 "bison_parser.cpp" break; default: @@ -3105,7 +3114,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3109 "bison_parser.cpp" +#line 3118 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3316,7 +3325,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 335 "bison_parser.y" +#line 336 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3334,236 +3343,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3338 "bison_parser.cpp" +#line 3347 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 354 "bison_parser.y" +#line 355 "bison_parser.y" { (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 3349 "bison_parser.cpp" +#line 3358 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 360 "bison_parser.y" +#line 361 "bison_parser.y" { (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 3360 "bison_parser.cpp" +#line 3369 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 367 "bison_parser.y" +#line 368 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3369 "bison_parser.cpp" +#line 3378 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 371 "bison_parser.y" +#line 372 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3378 "bison_parser.cpp" +#line 3387 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 375 "bison_parser.y" +#line 376 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3384 "bison_parser.cpp" +#line 3393 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 376 "bison_parser.y" +#line 377 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3390 "bison_parser.cpp" +#line 3399 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 377 "bison_parser.y" +#line 378 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3396 "bison_parser.cpp" +#line 3405 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 379 "bison_parser.y" +#line 380 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3402 "bison_parser.cpp" +#line 3411 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 380 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3408 "bison_parser.cpp" +#line 3417 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 381 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3414 "bison_parser.cpp" +#line 3423 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 382 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3420 "bison_parser.cpp" +#line 3429 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 383 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3426 "bison_parser.cpp" +#line 3435 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 384 "bison_parser.y" +#line 385 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3432 "bison_parser.cpp" +#line 3441 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 385 "bison_parser.y" +#line 386 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3438 "bison_parser.cpp" +#line 3447 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 386 "bison_parser.y" +#line 387 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3444 "bison_parser.cpp" +#line 3453 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 387 "bison_parser.y" +#line 388 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3450 "bison_parser.cpp" +#line 3459 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 388 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3456 "bison_parser.cpp" +#line 3465 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 394 "bison_parser.y" +#line 395 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3462 "bison_parser.cpp" +#line 3471 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 395 "bison_parser.y" +#line 396 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3468 "bison_parser.cpp" +#line 3477 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 397 "bison_parser.y" +#line 398 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3477 "bison_parser.cpp" +#line 3486 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 401 "bison_parser.y" +#line 402 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3486 "bison_parser.cpp" +#line 3495 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 406 "bison_parser.y" +#line 407 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3495 "bison_parser.cpp" +#line 3504 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' extended_literal_list ')' */ -#line 410 "bison_parser.y" +#line 411 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3505 "bison_parser.cpp" +#line 3514 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 420 "bison_parser.y" +#line 421 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3511 "bison_parser.cpp" +#line 3520 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 421 "bison_parser.y" +#line 422 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3517 "bison_parser.cpp" +#line 3526 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 422 "bison_parser.y" +#line 423 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3523 "bison_parser.cpp" +#line 3532 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 430 "bison_parser.y" +#line 431 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3533 "bison_parser.cpp" +#line 3542 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 438 "bison_parser.y" +#line 439 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3542 "bison_parser.cpp" +#line 3551 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_extended_literal_list ')' */ -#line 442 "bison_parser.y" +#line 443 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3552 "bison_parser.cpp" +#line 3561 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 454 "bison_parser.y" +#line 455 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (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 3563 "bison_parser.cpp" +#line 3572 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_import_export_options opt_where */ -#line 460 "bison_parser.y" +#line 461 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_export_option_t)->format); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3574,13 +3583,25 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->encoding = (yyvsp[-1].import_export_option_t)->encoding; (yyvsp[-1].import_export_option_t)->encoding = nullptr; } + if ((yyvsp[-1].import_export_option_t)->delimiter) { + (yyval.import_stmt)->delimiter = (yyvsp[-1].import_export_option_t)->delimiter; + (yyvsp[-1].import_export_option_t)->delimiter = nullptr; + } + if ((yyvsp[-1].import_export_option_t)->null) { + (yyval.import_stmt)->null = (yyvsp[-1].import_export_option_t)->null; + (yyvsp[-1].import_export_option_t)->null = nullptr; + } + if ((yyvsp[-1].import_export_option_t)->quote) { + (yyval.import_stmt)->quote = (yyvsp[-1].import_export_option_t)->quote; + (yyvsp[-1].import_export_option_t)->quote = nullptr; + } delete (yyvsp[-1].import_export_option_t); } -#line 3580 "bison_parser.cpp" +#line 3601 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 473 "bison_parser.y" +#line 486 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3595,35 +3616,35 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3599 "bison_parser.cpp" +#line 3620 "bison_parser.cpp" break; case 38: /* file_path: STRING */ -#line 488 "bison_parser.y" +#line 501 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 3605 "bison_parser.cpp" +#line 3626 "bison_parser.cpp" break; case 39: /* opt_import_export_options: WITH '(' import_export_options ')' */ -#line 490 "bison_parser.y" +#line 503 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3611 "bison_parser.cpp" +#line 3632 "bison_parser.cpp" break; case 40: /* opt_import_export_options: '(' import_export_options ')' */ -#line 491 "bison_parser.y" +#line 504 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3617 "bison_parser.cpp" +#line 3638 "bison_parser.cpp" break; case 41: /* opt_import_export_options: %empty */ -#line 492 "bison_parser.y" +#line 505 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; } -#line 3623 "bison_parser.cpp" +#line 3644 "bison_parser.cpp" break; case 42: /* import_export_options: import_export_options ',' FORMAT file_type */ -#line 494 "bison_parser.y" +#line 507 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->format != kImportAuto) { delete (yyvsp[-3].import_export_option_t); @@ -3633,20 +3654,20 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->format = (yyvsp[0].import_type_t); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3637 "bison_parser.cpp" +#line 3658 "bison_parser.cpp" break; case 43: /* import_export_options: FORMAT file_type */ -#line 503 "bison_parser.y" +#line 516 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->format = (yyvsp[0].import_type_t); } -#line 3646 "bison_parser.cpp" +#line 3667 "bison_parser.cpp" break; case 44: /* import_export_options: import_export_options ',' ENCODING STRING */ -#line 507 "bison_parser.y" +#line 520 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->encoding) { delete (yyvsp[-3].import_export_option_t); @@ -3657,20 +3678,92 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->encoding = (yyvsp[0].sval); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3661 "bison_parser.cpp" +#line 3682 "bison_parser.cpp" break; case 45: /* import_export_options: ENCODING STRING */ -#line 517 "bison_parser.y" +#line 530 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->encoding = (yyvsp[0].sval); } -#line 3670 "bison_parser.cpp" +#line 3691 "bison_parser.cpp" + break; + + case 46: /* import_export_options: import_export_options ',' DELIMITER STRING */ +#line 534 "bison_parser.y" + { + if ((yyvsp[-3].import_export_option_t)->delimiter) { + delete (yyvsp[-3].import_export_option_t); + free((yyvsp[0].sval)); + yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + YYERROR; + } + (yyvsp[-3].import_export_option_t)->delimiter = (yyvsp[0].sval); + (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); +} +#line 3706 "bison_parser.cpp" + break; + + case 47: /* import_export_options: DELIMITER STRING */ +#line 544 "bison_parser.y" + { + (yyval.import_export_option_t) = new ImportExportOptions{}; + (yyval.import_export_option_t)->delimiter = (yyvsp[0].sval); +} +#line 3715 "bison_parser.cpp" break; - case 46: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 527 "bison_parser.y" + case 48: /* import_export_options: import_export_options ',' NULL STRING */ +#line 548 "bison_parser.y" + { + if ((yyvsp[-3].import_export_option_t)->null) { + delete (yyvsp[-3].import_export_option_t); + free((yyvsp[0].sval)); + yyerror(&yyloc, result, scanner, "Null string must only be provided once."); + YYERROR; + } + (yyvsp[-3].import_export_option_t)->null = (yyvsp[0].sval); + (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); +} +#line 3730 "bison_parser.cpp" + break; + + case 49: /* import_export_options: NULL STRING */ +#line 558 "bison_parser.y" + { + (yyval.import_export_option_t) = new ImportExportOptions{}; + (yyval.import_export_option_t)->null = (yyvsp[0].sval); +} +#line 3739 "bison_parser.cpp" + break; + + case 50: /* import_export_options: import_export_options ',' QUOTE STRING */ +#line 562 "bison_parser.y" + { + if ((yyvsp[-3].import_export_option_t)->quote) { + delete (yyvsp[-3].import_export_option_t); + free((yyvsp[0].sval)); + yyerror(&yyloc, result, scanner, "Quote string must only be provided once."); + YYERROR; + } + (yyvsp[-3].import_export_option_t)->quote = (yyvsp[0].sval); + (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); +} +#line 3754 "bison_parser.cpp" + break; + + case 51: /* import_export_options: QUOTE STRING */ +#line 572 "bison_parser.y" + { + (yyval.import_export_option_t) = new ImportExportOptions{}; + (yyval.import_export_option_t)->quote = (yyvsp[0].sval); +} +#line 3763 "bison_parser.cpp" + break; + + case 52: /* export_statement: COPY table_name TO file_path opt_import_export_options */ +#line 582 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3680,13 +3773,25 @@ YYLTYPE yylloc = yyloc_default; (yyval.export_stmt)->encoding = (yyvsp[0].import_export_option_t)->encoding; (yyvsp[0].import_export_option_t)->encoding = nullptr; } + if ((yyvsp[0].import_export_option_t)->delimiter) { + (yyval.export_stmt)->delimiter = (yyvsp[0].import_export_option_t)->delimiter; + (yyvsp[0].import_export_option_t)->delimiter = nullptr; + } + if ((yyvsp[0].import_export_option_t)->null) { + (yyval.export_stmt)->null = (yyvsp[0].import_export_option_t)->null; + (yyvsp[0].import_export_option_t)->null = nullptr; + } + if ((yyvsp[0].import_export_option_t)->quote) { + (yyval.export_stmt)->quote = (yyvsp[0].import_export_option_t)->quote; + (yyvsp[0].import_export_option_t)->quote = nullptr; + } delete (yyvsp[0].import_export_option_t); } -#line 3686 "bison_parser.cpp" +#line 3791 "bison_parser.cpp" break; - case 47: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 538 "bison_parser.y" + case 53: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ +#line 605 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3695,39 +3800,51 @@ YYLTYPE yylloc = yyloc_default; (yyval.export_stmt)->encoding = (yyvsp[0].import_export_option_t)->encoding; (yyvsp[0].import_export_option_t)->encoding = nullptr; } + if ((yyvsp[0].import_export_option_t)->delimiter) { + (yyval.export_stmt)->delimiter = (yyvsp[0].import_export_option_t)->delimiter; + (yyvsp[0].import_export_option_t)->delimiter = nullptr; + } + if ((yyvsp[0].import_export_option_t)->null) { + (yyval.export_stmt)->null = (yyvsp[0].import_export_option_t)->null; + (yyvsp[0].import_export_option_t)->null = nullptr; + } + if ((yyvsp[0].import_export_option_t)->quote) { + (yyval.export_stmt)->quote = (yyvsp[0].import_export_option_t)->quote; + (yyvsp[0].import_export_option_t)->quote = nullptr; + } delete (yyvsp[0].import_export_option_t); } -#line 3701 "bison_parser.cpp" +#line 3818 "bison_parser.cpp" break; - case 48: /* show_statement: SHOW TABLES */ -#line 554 "bison_parser.y" + case 54: /* show_statement: SHOW TABLES */ +#line 633 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3707 "bison_parser.cpp" +#line 3824 "bison_parser.cpp" break; - case 49: /* show_statement: SHOW COLUMNS table_name */ -#line 555 "bison_parser.y" + case 55: /* show_statement: SHOW COLUMNS table_name */ +#line 634 "bison_parser.y" { (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 3717 "bison_parser.cpp" +#line 3834 "bison_parser.cpp" break; - case 50: /* show_statement: DESCRIBE table_name */ -#line 560 "bison_parser.y" + case 56: /* show_statement: DESCRIBE table_name */ +#line 639 "bison_parser.y" { (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 3727 "bison_parser.cpp" +#line 3844 "bison_parser.cpp" break; - case 51: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 571 "bison_parser.y" + case 57: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ +#line 650 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3741,11 +3858,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3745 "bison_parser.cpp" +#line 3862 "bison_parser.cpp" break; - case 52: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 584 "bison_parser.y" + case 58: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ +#line 663 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3758,11 +3875,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3762 "bison_parser.cpp" +#line 3879 "bison_parser.cpp" break; - case 53: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 596 "bison_parser.y" + case 59: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ +#line 675 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3770,11 +3887,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3774 "bison_parser.cpp" +#line 3891 "bison_parser.cpp" break; - case 54: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 603 "bison_parser.y" + case 60: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ +#line 682 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3782,11 +3899,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3786 "bison_parser.cpp" +#line 3903 "bison_parser.cpp" break; - case 55: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 610 "bison_parser.y" + case 61: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ +#line 689 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3795,53 +3912,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3799 "bison_parser.cpp" +#line 3916 "bison_parser.cpp" break; - case 56: /* opt_not_exists: IF NOT EXISTS */ -#line 619 "bison_parser.y" + case 62: /* opt_not_exists: IF NOT EXISTS */ +#line 698 "bison_parser.y" { (yyval.bval) = true; } -#line 3805 "bison_parser.cpp" +#line 3922 "bison_parser.cpp" break; - case 57: /* opt_not_exists: %empty */ -#line 620 "bison_parser.y" + case 63: /* opt_not_exists: %empty */ +#line 699 "bison_parser.y" { (yyval.bval) = false; } -#line 3811 "bison_parser.cpp" +#line 3928 "bison_parser.cpp" break; - case 58: /* table_elem_commalist: table_elem */ -#line 622 "bison_parser.y" + case 64: /* table_elem_commalist: table_elem */ +#line 701 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3820 "bison_parser.cpp" +#line 3937 "bison_parser.cpp" break; - case 59: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 626 "bison_parser.y" + case 65: /* table_elem_commalist: table_elem_commalist ',' table_elem */ +#line 705 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3829 "bison_parser.cpp" +#line 3946 "bison_parser.cpp" break; - case 60: /* table_elem: column_def */ -#line 631 "bison_parser.y" + case 66: /* table_elem: column_def */ +#line 710 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3835 "bison_parser.cpp" +#line 3952 "bison_parser.cpp" break; - case 61: /* table_elem: table_constraint */ -#line 632 "bison_parser.y" + case 67: /* table_elem: table_constraint */ +#line 711 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3841 "bison_parser.cpp" +#line 3958 "bison_parser.cpp" break; - case 62: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 634 "bison_parser.y" + case 68: /* column_def: IDENTIFIER column_type opt_column_constraints */ +#line 713 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3849,192 +3966,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3853 "bison_parser.cpp" +#line 3970 "bison_parser.cpp" break; - case 63: /* column_type: BIGINT */ -#line 642 "bison_parser.y" + case 69: /* column_type: BIGINT */ +#line 721 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3859 "bison_parser.cpp" +#line 3976 "bison_parser.cpp" break; - case 64: /* column_type: BOOLEAN */ -#line 643 "bison_parser.y" + case 70: /* column_type: BOOLEAN */ +#line 722 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3865 "bison_parser.cpp" +#line 3982 "bison_parser.cpp" break; - case 65: /* column_type: CHAR '(' INTVAL ')' */ -#line 644 "bison_parser.y" + case 71: /* column_type: CHAR '(' INTVAL ')' */ +#line 723 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3871 "bison_parser.cpp" +#line 3988 "bison_parser.cpp" break; - case 66: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 645 "bison_parser.y" + case 72: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ +#line 724 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3877 "bison_parser.cpp" +#line 3994 "bison_parser.cpp" break; - case 67: /* column_type: DATE */ -#line 646 "bison_parser.y" + case 73: /* column_type: DATE */ +#line 725 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3883 "bison_parser.cpp" +#line 4000 "bison_parser.cpp" break; - case 68: /* column_type: DATETIME */ -#line 647 "bison_parser.y" + case 74: /* column_type: DATETIME */ +#line 726 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3889 "bison_parser.cpp" +#line 4006 "bison_parser.cpp" break; - case 69: /* column_type: DECIMAL opt_decimal_specification */ -#line 648 "bison_parser.y" + case 75: /* column_type: DECIMAL opt_decimal_specification */ +#line 727 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3898 "bison_parser.cpp" +#line 4015 "bison_parser.cpp" break; - case 70: /* column_type: DOUBLE */ -#line 652 "bison_parser.y" + case 76: /* column_type: DOUBLE */ +#line 731 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3904 "bison_parser.cpp" +#line 4021 "bison_parser.cpp" break; - case 71: /* column_type: FLOAT */ -#line 653 "bison_parser.y" + case 77: /* column_type: FLOAT */ +#line 732 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3910 "bison_parser.cpp" +#line 4027 "bison_parser.cpp" break; - case 72: /* column_type: INT */ -#line 654 "bison_parser.y" + case 78: /* column_type: INT */ +#line 733 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3916 "bison_parser.cpp" +#line 4033 "bison_parser.cpp" break; - case 73: /* column_type: INTEGER */ -#line 655 "bison_parser.y" + case 79: /* column_type: INTEGER */ +#line 734 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3922 "bison_parser.cpp" +#line 4039 "bison_parser.cpp" break; - case 74: /* column_type: LONG */ -#line 656 "bison_parser.y" + case 80: /* column_type: LONG */ +#line 735 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3928 "bison_parser.cpp" +#line 4045 "bison_parser.cpp" break; - case 75: /* column_type: REAL */ -#line 657 "bison_parser.y" + case 81: /* column_type: REAL */ +#line 736 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3934 "bison_parser.cpp" +#line 4051 "bison_parser.cpp" break; - case 76: /* column_type: SMALLINT */ -#line 658 "bison_parser.y" + case 82: /* column_type: SMALLINT */ +#line 737 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3940 "bison_parser.cpp" +#line 4057 "bison_parser.cpp" break; - case 77: /* column_type: TEXT */ -#line 659 "bison_parser.y" + case 83: /* column_type: TEXT */ +#line 738 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3946 "bison_parser.cpp" +#line 4063 "bison_parser.cpp" break; - case 78: /* column_type: TIME opt_time_precision */ -#line 660 "bison_parser.y" + case 84: /* column_type: TIME opt_time_precision */ +#line 739 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3952 "bison_parser.cpp" +#line 4069 "bison_parser.cpp" break; - case 79: /* column_type: TIMESTAMP */ -#line 661 "bison_parser.y" + case 85: /* column_type: TIMESTAMP */ +#line 740 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3958 "bison_parser.cpp" +#line 4075 "bison_parser.cpp" break; - case 80: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 662 "bison_parser.y" + case 86: /* column_type: VARCHAR '(' INTVAL ')' */ +#line 741 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3964 "bison_parser.cpp" +#line 4081 "bison_parser.cpp" break; - case 81: /* opt_time_precision: '(' INTVAL ')' */ -#line 664 "bison_parser.y" + case 87: /* opt_time_precision: '(' INTVAL ')' */ +#line 743 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3970 "bison_parser.cpp" +#line 4087 "bison_parser.cpp" break; - case 82: /* opt_time_precision: %empty */ -#line 665 "bison_parser.y" + case 88: /* opt_time_precision: %empty */ +#line 744 "bison_parser.y" { (yyval.ival) = 0; } -#line 3976 "bison_parser.cpp" +#line 4093 "bison_parser.cpp" break; - case 83: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 667 "bison_parser.y" + case 89: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ +#line 746 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3982 "bison_parser.cpp" +#line 4099 "bison_parser.cpp" break; - case 84: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 668 "bison_parser.y" + case 90: /* opt_decimal_specification: '(' INTVAL ')' */ +#line 747 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3988 "bison_parser.cpp" +#line 4105 "bison_parser.cpp" break; - case 85: /* opt_decimal_specification: %empty */ -#line 669 "bison_parser.y" + case 91: /* opt_decimal_specification: %empty */ +#line 748 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3994 "bison_parser.cpp" +#line 4111 "bison_parser.cpp" break; - case 86: /* opt_column_constraints: column_constraints */ -#line 671 "bison_parser.y" + case 92: /* opt_column_constraints: column_constraints */ +#line 750 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4000 "bison_parser.cpp" +#line 4117 "bison_parser.cpp" break; - case 87: /* opt_column_constraints: %empty */ -#line 672 "bison_parser.y" + case 93: /* opt_column_constraints: %empty */ +#line 751 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4006 "bison_parser.cpp" +#line 4123 "bison_parser.cpp" break; - case 88: /* column_constraints: column_constraint */ -#line 674 "bison_parser.y" + case 94: /* column_constraints: column_constraint */ +#line 753 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4015 "bison_parser.cpp" +#line 4132 "bison_parser.cpp" break; - case 89: /* column_constraints: column_constraints column_constraint */ -#line 678 "bison_parser.y" + case 95: /* column_constraints: column_constraints column_constraint */ +#line 757 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4024 "bison_parser.cpp" +#line 4141 "bison_parser.cpp" break; - case 90: /* column_constraints: references_spec */ -#line 682 "bison_parser.y" + case 96: /* column_constraints: references_spec */ +#line 761 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4034 "bison_parser.cpp" +#line 4151 "bison_parser.cpp" break; - case 91: /* column_constraints: column_constraints references_spec */ -#line 687 "bison_parser.y" + case 97: /* column_constraints: column_constraints references_spec */ +#line 766 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4042,159 +4159,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4046 "bison_parser.cpp" +#line 4163 "bison_parser.cpp" break; - case 92: /* column_constraint: PRIMARY KEY */ -#line 695 "bison_parser.y" + case 98: /* column_constraint: PRIMARY KEY */ +#line 774 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4052 "bison_parser.cpp" +#line 4169 "bison_parser.cpp" break; - case 93: /* column_constraint: UNIQUE */ -#line 696 "bison_parser.y" + case 99: /* column_constraint: UNIQUE */ +#line 775 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4058 "bison_parser.cpp" +#line 4175 "bison_parser.cpp" break; - case 94: /* column_constraint: NULL */ -#line 697 "bison_parser.y" + case 100: /* column_constraint: NULL */ +#line 776 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4064 "bison_parser.cpp" +#line 4181 "bison_parser.cpp" break; - case 95: /* column_constraint: NOT NULL */ -#line 698 "bison_parser.y" + case 101: /* column_constraint: NOT NULL */ +#line 777 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4070 "bison_parser.cpp" +#line 4187 "bison_parser.cpp" break; - case 96: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 700 "bison_parser.y" + case 102: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ +#line 779 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4076 "bison_parser.cpp" +#line 4193 "bison_parser.cpp" break; - case 97: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 701 "bison_parser.y" + case 103: /* table_constraint: UNIQUE '(' ident_commalist ')' */ +#line 780 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4082 "bison_parser.cpp" +#line 4199 "bison_parser.cpp" break; - case 98: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 702 "bison_parser.y" + case 104: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ +#line 781 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4088 "bison_parser.cpp" +#line 4205 "bison_parser.cpp" break; - case 99: /* references_spec: REFERENCES table_name opt_column_list */ -#line 704 "bison_parser.y" + case 105: /* references_spec: REFERENCES table_name opt_column_list */ +#line 783 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4094 "bison_parser.cpp" +#line 4211 "bison_parser.cpp" break; - case 100: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 712 "bison_parser.y" + case 106: /* drop_statement: DROP TABLE opt_exists table_name */ +#line 791 "bison_parser.y" { (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 4105 "bison_parser.cpp" +#line 4222 "bison_parser.cpp" break; - case 101: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 718 "bison_parser.y" + case 107: /* drop_statement: DROP VIEW opt_exists table_name */ +#line 797 "bison_parser.y" { (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 4116 "bison_parser.cpp" +#line 4233 "bison_parser.cpp" break; - case 102: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 724 "bison_parser.y" + case 108: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ +#line 803 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4126 "bison_parser.cpp" +#line 4243 "bison_parser.cpp" break; - case 103: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 730 "bison_parser.y" + case 109: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ +#line 809 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4136 "bison_parser.cpp" +#line 4253 "bison_parser.cpp" break; - case 104: /* opt_exists: IF EXISTS */ -#line 736 "bison_parser.y" + case 110: /* opt_exists: IF EXISTS */ +#line 815 "bison_parser.y" { (yyval.bval) = true; } -#line 4142 "bison_parser.cpp" +#line 4259 "bison_parser.cpp" break; - case 105: /* opt_exists: %empty */ -#line 737 "bison_parser.y" + case 111: /* opt_exists: %empty */ +#line 816 "bison_parser.y" { (yyval.bval) = false; } -#line 4148 "bison_parser.cpp" +#line 4265 "bison_parser.cpp" break; - case 106: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 744 "bison_parser.y" + case 112: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ +#line 823 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4158 "bison_parser.cpp" +#line 4275 "bison_parser.cpp" break; - case 107: /* alter_action: drop_action */ -#line 750 "bison_parser.y" + case 113: /* alter_action: drop_action */ +#line 829 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4164 "bison_parser.cpp" +#line 4281 "bison_parser.cpp" break; - case 108: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 752 "bison_parser.y" + case 114: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ +#line 831 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4173 "bison_parser.cpp" +#line 4290 "bison_parser.cpp" break; - case 109: /* delete_statement: DELETE FROM table_name opt_where */ -#line 762 "bison_parser.y" + case 115: /* delete_statement: DELETE FROM table_name opt_where */ +#line 841 "bison_parser.y" { (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 4184 "bison_parser.cpp" +#line 4301 "bison_parser.cpp" break; - case 110: /* truncate_statement: TRUNCATE table_name */ -#line 769 "bison_parser.y" + case 116: /* truncate_statement: TRUNCATE table_name */ +#line 848 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4194 "bison_parser.cpp" +#line 4311 "bison_parser.cpp" break; - case 111: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 780 "bison_parser.y" + case 117: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ +#line 859 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4202,11 +4319,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4206 "bison_parser.cpp" +#line 4323 "bison_parser.cpp" break; - case 112: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 787 "bison_parser.y" + case 118: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ +#line 866 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4214,80 +4331,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4218 "bison_parser.cpp" +#line 4335 "bison_parser.cpp" break; - case 113: /* opt_column_list: '(' ident_commalist ')' */ -#line 795 "bison_parser.y" + case 119: /* opt_column_list: '(' ident_commalist ')' */ +#line 874 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4224 "bison_parser.cpp" +#line 4341 "bison_parser.cpp" break; - case 114: /* opt_column_list: %empty */ -#line 796 "bison_parser.y" + case 120: /* opt_column_list: %empty */ +#line 875 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4230 "bison_parser.cpp" +#line 4347 "bison_parser.cpp" break; - case 115: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 803 "bison_parser.y" + case 121: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ +#line 882 "bison_parser.y" { (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 4241 "bison_parser.cpp" +#line 4358 "bison_parser.cpp" break; - case 116: /* update_clause_commalist: update_clause */ -#line 810 "bison_parser.y" + case 122: /* update_clause_commalist: update_clause */ +#line 889 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4250 "bison_parser.cpp" +#line 4367 "bison_parser.cpp" break; - case 117: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 814 "bison_parser.y" + case 123: /* update_clause_commalist: update_clause_commalist ',' update_clause */ +#line 893 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4259 "bison_parser.cpp" +#line 4376 "bison_parser.cpp" break; - case 118: /* update_clause: IDENTIFIER '=' expr */ -#line 819 "bison_parser.y" + case 124: /* update_clause: IDENTIFIER '=' expr */ +#line 898 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4269 "bison_parser.cpp" +#line 4386 "bison_parser.cpp" break; - case 119: /* select_statement: opt_with_clause select_with_paren */ -#line 829 "bison_parser.y" + case 125: /* select_statement: opt_with_clause select_with_paren */ +#line 908 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4278 "bison_parser.cpp" +#line 4395 "bison_parser.cpp" break; - case 120: /* select_statement: opt_with_clause select_no_paren */ -#line 833 "bison_parser.y" + case 126: /* select_statement: opt_with_clause select_no_paren */ +#line 912 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4287 "bison_parser.cpp" +#line 4404 "bison_parser.cpp" break; - case 121: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 837 "bison_parser.y" + case 127: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ +#line 916 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4299,17 +4416,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4303 "bison_parser.cpp" +#line 4420 "bison_parser.cpp" break; - case 124: /* select_within_set_operation_no_parentheses: select_clause */ -#line 851 "bison_parser.y" + case 130: /* select_within_set_operation_no_parentheses: select_clause */ +#line 930 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4309 "bison_parser.cpp" +#line 4426 "bison_parser.cpp" break; - case 125: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 852 "bison_parser.y" + case 131: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ +#line 931 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4318,23 +4435,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4322 "bison_parser.cpp" +#line 4439 "bison_parser.cpp" break; - case 126: /* select_with_paren: '(' select_no_paren ')' */ -#line 861 "bison_parser.y" + case 132: /* select_with_paren: '(' select_no_paren ')' */ +#line 940 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4328 "bison_parser.cpp" +#line 4445 "bison_parser.cpp" break; - case 127: /* select_with_paren: '(' select_with_paren ')' */ -#line 862 "bison_parser.y" + case 133: /* select_with_paren: '(' select_with_paren ')' */ +#line 941 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4334 "bison_parser.cpp" +#line 4451 "bison_parser.cpp" break; - case 128: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 864 "bison_parser.y" + case 134: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ +#line 943 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4349,11 +4466,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4353 "bison_parser.cpp" +#line 4470 "bison_parser.cpp" break; - case 129: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 878 "bison_parser.y" + case 135: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ +#line 957 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4365,59 +4482,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4369 "bison_parser.cpp" +#line 4486 "bison_parser.cpp" break; - case 130: /* set_operator: set_type opt_all */ -#line 890 "bison_parser.y" + case 136: /* set_operator: set_type opt_all */ +#line 969 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4378 "bison_parser.cpp" +#line 4495 "bison_parser.cpp" break; - case 131: /* set_type: UNION */ -#line 895 "bison_parser.y" + case 137: /* set_type: UNION */ +#line 974 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4387 "bison_parser.cpp" +#line 4504 "bison_parser.cpp" break; - case 132: /* set_type: INTERSECT */ -#line 899 "bison_parser.y" + case 138: /* set_type: INTERSECT */ +#line 978 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4396 "bison_parser.cpp" +#line 4513 "bison_parser.cpp" break; - case 133: /* set_type: EXCEPT */ -#line 903 "bison_parser.y" + case 139: /* set_type: EXCEPT */ +#line 982 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4405 "bison_parser.cpp" +#line 4522 "bison_parser.cpp" break; - case 134: /* opt_all: ALL */ -#line 908 "bison_parser.y" + case 140: /* opt_all: ALL */ +#line 987 "bison_parser.y" { (yyval.bval) = true; } -#line 4411 "bison_parser.cpp" +#line 4528 "bison_parser.cpp" break; - case 135: /* opt_all: %empty */ -#line 909 "bison_parser.y" + case 141: /* opt_all: %empty */ +#line 988 "bison_parser.y" { (yyval.bval) = false; } -#line 4417 "bison_parser.cpp" +#line 4534 "bison_parser.cpp" break; - case 136: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 911 "bison_parser.y" + case 142: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ +#line 990 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4427,239 +4544,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4431 "bison_parser.cpp" +#line 4548 "bison_parser.cpp" break; - case 137: /* opt_distinct: DISTINCT */ -#line 921 "bison_parser.y" + case 143: /* opt_distinct: DISTINCT */ +#line 1000 "bison_parser.y" { (yyval.bval) = true; } -#line 4437 "bison_parser.cpp" +#line 4554 "bison_parser.cpp" break; - case 138: /* opt_distinct: %empty */ -#line 922 "bison_parser.y" + case 144: /* opt_distinct: %empty */ +#line 1001 "bison_parser.y" { (yyval.bval) = false; } -#line 4443 "bison_parser.cpp" +#line 4560 "bison_parser.cpp" break; - case 140: /* opt_from_clause: from_clause */ -#line 926 "bison_parser.y" + case 146: /* opt_from_clause: from_clause */ +#line 1005 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4449 "bison_parser.cpp" +#line 4566 "bison_parser.cpp" break; - case 141: /* opt_from_clause: %empty */ -#line 927 "bison_parser.y" + case 147: /* opt_from_clause: %empty */ +#line 1006 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4455 "bison_parser.cpp" +#line 4572 "bison_parser.cpp" break; - case 142: /* from_clause: FROM table_ref */ -#line 929 "bison_parser.y" + case 148: /* from_clause: FROM table_ref */ +#line 1008 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4461 "bison_parser.cpp" +#line 4578 "bison_parser.cpp" break; - case 143: /* opt_where: WHERE expr */ -#line 931 "bison_parser.y" + case 149: /* opt_where: WHERE expr */ +#line 1010 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4467 "bison_parser.cpp" +#line 4584 "bison_parser.cpp" break; - case 144: /* opt_where: %empty */ -#line 932 "bison_parser.y" + case 150: /* opt_where: %empty */ +#line 1011 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4473 "bison_parser.cpp" +#line 4590 "bison_parser.cpp" break; - case 145: /* opt_group: GROUP BY expr_list opt_having */ -#line 934 "bison_parser.y" + case 151: /* opt_group: GROUP BY expr_list opt_having */ +#line 1013 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4483 "bison_parser.cpp" +#line 4600 "bison_parser.cpp" break; - case 146: /* opt_group: %empty */ -#line 939 "bison_parser.y" + case 152: /* opt_group: %empty */ +#line 1018 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4489 "bison_parser.cpp" +#line 4606 "bison_parser.cpp" break; - case 147: /* opt_having: HAVING expr */ -#line 941 "bison_parser.y" + case 153: /* opt_having: HAVING expr */ +#line 1020 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4495 "bison_parser.cpp" +#line 4612 "bison_parser.cpp" break; - case 148: /* opt_having: %empty */ -#line 942 "bison_parser.y" + case 154: /* opt_having: %empty */ +#line 1021 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4501 "bison_parser.cpp" +#line 4618 "bison_parser.cpp" break; - case 149: /* opt_order: ORDER BY order_list */ -#line 944 "bison_parser.y" + case 155: /* opt_order: ORDER BY order_list */ +#line 1023 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4507 "bison_parser.cpp" +#line 4624 "bison_parser.cpp" break; - case 150: /* opt_order: %empty */ -#line 945 "bison_parser.y" + case 156: /* opt_order: %empty */ +#line 1024 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4513 "bison_parser.cpp" +#line 4630 "bison_parser.cpp" break; - case 151: /* order_list: order_desc */ -#line 947 "bison_parser.y" + case 157: /* order_list: order_desc */ +#line 1026 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4522 "bison_parser.cpp" +#line 4639 "bison_parser.cpp" break; - case 152: /* order_list: order_list ',' order_desc */ -#line 951 "bison_parser.y" + case 158: /* order_list: order_list ',' order_desc */ +#line 1030 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4531 "bison_parser.cpp" +#line 4648 "bison_parser.cpp" break; - case 153: /* order_desc: expr opt_order_type */ -#line 956 "bison_parser.y" + case 159: /* order_desc: expr opt_order_type */ +#line 1035 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4537 "bison_parser.cpp" +#line 4654 "bison_parser.cpp" break; - case 154: /* opt_order_type: ASC */ -#line 958 "bison_parser.y" + case 160: /* opt_order_type: ASC */ +#line 1037 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4543 "bison_parser.cpp" +#line 4660 "bison_parser.cpp" break; - case 155: /* opt_order_type: DESC */ -#line 959 "bison_parser.y" + case 161: /* opt_order_type: DESC */ +#line 1038 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4549 "bison_parser.cpp" +#line 4666 "bison_parser.cpp" break; - case 156: /* opt_order_type: %empty */ -#line 960 "bison_parser.y" + case 162: /* opt_order_type: %empty */ +#line 1039 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4555 "bison_parser.cpp" +#line 4672 "bison_parser.cpp" break; - case 157: /* opt_top: TOP int_literal */ -#line 964 "bison_parser.y" + case 163: /* opt_top: TOP int_literal */ +#line 1043 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4561 "bison_parser.cpp" +#line 4678 "bison_parser.cpp" break; - case 158: /* opt_top: %empty */ -#line 965 "bison_parser.y" + case 164: /* opt_top: %empty */ +#line 1044 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4567 "bison_parser.cpp" +#line 4684 "bison_parser.cpp" break; - case 159: /* opt_limit: LIMIT expr */ -#line 967 "bison_parser.y" + case 165: /* opt_limit: LIMIT expr */ +#line 1046 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4573 "bison_parser.cpp" +#line 4690 "bison_parser.cpp" break; - case 160: /* opt_limit: OFFSET expr */ -#line 968 "bison_parser.y" + case 166: /* opt_limit: OFFSET expr */ +#line 1047 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4579 "bison_parser.cpp" +#line 4696 "bison_parser.cpp" break; - case 161: /* opt_limit: LIMIT expr OFFSET expr */ -#line 969 "bison_parser.y" + case 167: /* opt_limit: LIMIT expr OFFSET expr */ +#line 1048 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4585 "bison_parser.cpp" +#line 4702 "bison_parser.cpp" break; - case 162: /* opt_limit: LIMIT ALL */ -#line 970 "bison_parser.y" + case 168: /* opt_limit: LIMIT ALL */ +#line 1049 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4591 "bison_parser.cpp" +#line 4708 "bison_parser.cpp" break; - case 163: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 971 "bison_parser.y" + case 169: /* opt_limit: LIMIT ALL OFFSET expr */ +#line 1050 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4597 "bison_parser.cpp" +#line 4714 "bison_parser.cpp" break; - case 164: /* opt_limit: %empty */ -#line 972 "bison_parser.y" + case 170: /* opt_limit: %empty */ +#line 1051 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4603 "bison_parser.cpp" +#line 4720 "bison_parser.cpp" break; - case 165: /* expr_list: expr_alias */ -#line 977 "bison_parser.y" + case 171: /* expr_list: expr_alias */ +#line 1056 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4612 "bison_parser.cpp" +#line 4729 "bison_parser.cpp" break; - case 166: /* expr_list: expr_list ',' expr_alias */ -#line 981 "bison_parser.y" + case 172: /* expr_list: expr_list ',' expr_alias */ +#line 1060 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4621 "bison_parser.cpp" +#line 4738 "bison_parser.cpp" break; - case 167: /* opt_extended_literal_list: extended_literal_list */ -#line 987 "bison_parser.y" + case 173: /* opt_extended_literal_list: extended_literal_list */ +#line 1066 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4627 "bison_parser.cpp" +#line 4744 "bison_parser.cpp" break; - case 168: /* opt_extended_literal_list: %empty */ -#line 988 "bison_parser.y" + case 174: /* opt_extended_literal_list: %empty */ +#line 1067 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4633 "bison_parser.cpp" +#line 4750 "bison_parser.cpp" break; - case 169: /* extended_literal_list: casted_extended_literal */ -#line 990 "bison_parser.y" + case 175: /* extended_literal_list: casted_extended_literal */ +#line 1069 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4642 "bison_parser.cpp" +#line 4759 "bison_parser.cpp" break; - case 170: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 994 "bison_parser.y" + case 176: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ +#line 1073 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4651 "bison_parser.cpp" +#line 4768 "bison_parser.cpp" break; - case 172: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 999 "bison_parser.y" + case 178: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4659 "bison_parser.cpp" +#line 4776 "bison_parser.cpp" break; - case 173: /* extended_literal: literal */ -#line 1003 "bison_parser.y" + case 179: /* extended_literal: literal */ +#line 1082 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4668,23 +4785,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4672 "bison_parser.cpp" +#line 4789 "bison_parser.cpp" break; - case 174: /* extended_literal: '-' num_literal */ -#line 1011 "bison_parser.y" + case 180: /* extended_literal: '-' num_literal */ +#line 1090 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4678 "bison_parser.cpp" +#line 4795 "bison_parser.cpp" break; - case 175: /* extended_literal: '-' interval_literal */ -#line 1012 "bison_parser.y" + case 181: /* extended_literal: '-' interval_literal */ +#line 1091 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4684 "bison_parser.cpp" +#line 4801 "bison_parser.cpp" break; - case 176: /* expr_alias: expr opt_alias */ -#line 1014 "bison_parser.y" + case 182: /* expr_alias: expr opt_alias */ +#line 1093 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4693,507 +4810,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4697 "bison_parser.cpp" +#line 4814 "bison_parser.cpp" break; - case 182: /* operand: '(' expr ')' */ -#line 1025 "bison_parser.y" + case 188: /* operand: '(' expr ')' */ +#line 1104 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4703 "bison_parser.cpp" +#line 4820 "bison_parser.cpp" break; - case 192: /* operand: '(' select_no_paren ')' */ -#line 1027 "bison_parser.y" + case 198: /* operand: '(' select_no_paren ')' */ +#line 1106 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4711 "bison_parser.cpp" +#line 4828 "bison_parser.cpp" break; - case 195: /* unary_expr: '-' operand */ -#line 1033 "bison_parser.y" + case 201: /* unary_expr: '-' operand */ +#line 1112 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4717 "bison_parser.cpp" +#line 4834 "bison_parser.cpp" break; - case 196: /* unary_expr: NOT operand */ -#line 1034 "bison_parser.y" + case 202: /* unary_expr: NOT operand */ +#line 1113 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4723 "bison_parser.cpp" +#line 4840 "bison_parser.cpp" break; - case 197: /* unary_expr: operand ISNULL */ -#line 1035 "bison_parser.y" + case 203: /* unary_expr: operand ISNULL */ +#line 1114 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4729 "bison_parser.cpp" +#line 4846 "bison_parser.cpp" break; - case 198: /* unary_expr: operand IS NULL */ -#line 1036 "bison_parser.y" + case 204: /* unary_expr: operand IS NULL */ +#line 1115 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4735 "bison_parser.cpp" +#line 4852 "bison_parser.cpp" break; - case 199: /* unary_expr: operand IS NOT NULL */ -#line 1037 "bison_parser.y" + case 205: /* unary_expr: operand IS NOT NULL */ +#line 1116 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4741 "bison_parser.cpp" +#line 4858 "bison_parser.cpp" break; - case 201: /* binary_expr: operand '-' operand */ -#line 1039 "bison_parser.y" + case 207: /* binary_expr: operand '-' operand */ +#line 1118 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4747 "bison_parser.cpp" +#line 4864 "bison_parser.cpp" break; - case 202: /* binary_expr: operand '+' operand */ -#line 1040 "bison_parser.y" + case 208: /* binary_expr: operand '+' operand */ +#line 1119 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4753 "bison_parser.cpp" +#line 4870 "bison_parser.cpp" break; - case 203: /* binary_expr: operand '/' operand */ -#line 1041 "bison_parser.y" + case 209: /* binary_expr: operand '/' operand */ +#line 1120 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4759 "bison_parser.cpp" +#line 4876 "bison_parser.cpp" break; - case 204: /* binary_expr: operand '*' operand */ -#line 1042 "bison_parser.y" + case 210: /* binary_expr: operand '*' operand */ +#line 1121 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4765 "bison_parser.cpp" +#line 4882 "bison_parser.cpp" break; - case 205: /* binary_expr: operand '%' operand */ -#line 1043 "bison_parser.y" + case 211: /* binary_expr: operand '%' operand */ +#line 1122 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4771 "bison_parser.cpp" +#line 4888 "bison_parser.cpp" break; - case 206: /* binary_expr: operand '^' operand */ -#line 1044 "bison_parser.y" + case 212: /* binary_expr: operand '^' operand */ +#line 1123 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4777 "bison_parser.cpp" +#line 4894 "bison_parser.cpp" break; - case 207: /* binary_expr: operand LIKE operand */ -#line 1045 "bison_parser.y" + case 213: /* binary_expr: operand LIKE operand */ +#line 1124 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4783 "bison_parser.cpp" +#line 4900 "bison_parser.cpp" break; - case 208: /* binary_expr: operand NOT LIKE operand */ -#line 1046 "bison_parser.y" + case 214: /* binary_expr: operand NOT LIKE operand */ +#line 1125 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4789 "bison_parser.cpp" +#line 4906 "bison_parser.cpp" break; - case 209: /* binary_expr: operand ILIKE operand */ -#line 1047 "bison_parser.y" + case 215: /* binary_expr: operand ILIKE operand */ +#line 1126 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4795 "bison_parser.cpp" +#line 4912 "bison_parser.cpp" break; - case 210: /* binary_expr: operand CONCAT operand */ -#line 1048 "bison_parser.y" + case 216: /* binary_expr: operand CONCAT operand */ +#line 1127 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4801 "bison_parser.cpp" +#line 4918 "bison_parser.cpp" break; - case 211: /* logic_expr: expr AND expr */ -#line 1050 "bison_parser.y" + case 217: /* logic_expr: expr AND expr */ +#line 1129 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4807 "bison_parser.cpp" +#line 4924 "bison_parser.cpp" break; - case 212: /* logic_expr: expr OR expr */ -#line 1051 "bison_parser.y" + case 218: /* logic_expr: expr OR expr */ +#line 1130 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4813 "bison_parser.cpp" +#line 4930 "bison_parser.cpp" break; - case 213: /* in_expr: operand IN '(' expr_list ')' */ -#line 1053 "bison_parser.y" + case 219: /* in_expr: operand IN '(' expr_list ')' */ +#line 1132 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4819 "bison_parser.cpp" +#line 4936 "bison_parser.cpp" break; - case 214: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1054 "bison_parser.y" + case 220: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 1133 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4825 "bison_parser.cpp" +#line 4942 "bison_parser.cpp" break; - case 215: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1055 "bison_parser.y" + case 221: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4831 "bison_parser.cpp" +#line 4948 "bison_parser.cpp" break; - case 216: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1056 "bison_parser.y" + case 222: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4837 "bison_parser.cpp" +#line 4954 "bison_parser.cpp" break; - case 217: /* case_expr: CASE expr case_list END */ -#line 1060 "bison_parser.y" + case 223: /* case_expr: CASE expr case_list END */ +#line 1139 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4843 "bison_parser.cpp" +#line 4960 "bison_parser.cpp" break; - case 218: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1061 "bison_parser.y" + case 224: /* case_expr: CASE expr case_list ELSE expr END */ +#line 1140 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4849 "bison_parser.cpp" +#line 4966 "bison_parser.cpp" break; - case 219: /* case_expr: CASE case_list END */ -#line 1062 "bison_parser.y" + case 225: /* case_expr: CASE case_list END */ +#line 1141 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4855 "bison_parser.cpp" +#line 4972 "bison_parser.cpp" break; - case 220: /* case_expr: CASE case_list ELSE expr END */ -#line 1063 "bison_parser.y" + case 226: /* case_expr: CASE case_list ELSE expr END */ +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4861 "bison_parser.cpp" +#line 4978 "bison_parser.cpp" break; - case 221: /* case_list: WHEN expr THEN expr */ -#line 1065 "bison_parser.y" + case 227: /* case_list: WHEN expr THEN expr */ +#line 1144 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4867 "bison_parser.cpp" +#line 4984 "bison_parser.cpp" break; - case 222: /* case_list: case_list WHEN expr THEN expr */ -#line 1066 "bison_parser.y" + case 228: /* case_list: case_list WHEN expr THEN expr */ +#line 1145 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4873 "bison_parser.cpp" +#line 4990 "bison_parser.cpp" break; - case 223: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1068 "bison_parser.y" + case 229: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4879 "bison_parser.cpp" +#line 4996 "bison_parser.cpp" break; - case 224: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1069 "bison_parser.y" + case 230: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1148 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4885 "bison_parser.cpp" +#line 5002 "bison_parser.cpp" break; - case 225: /* comp_expr: operand '=' operand */ -#line 1071 "bison_parser.y" + case 231: /* comp_expr: operand '=' operand */ +#line 1150 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4891 "bison_parser.cpp" +#line 5008 "bison_parser.cpp" break; - case 226: /* comp_expr: operand EQUALS operand */ -#line 1072 "bison_parser.y" + case 232: /* comp_expr: operand EQUALS operand */ +#line 1151 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4897 "bison_parser.cpp" +#line 5014 "bison_parser.cpp" break; - case 227: /* comp_expr: operand NOTEQUALS operand */ -#line 1073 "bison_parser.y" + case 233: /* comp_expr: operand NOTEQUALS operand */ +#line 1152 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4903 "bison_parser.cpp" +#line 5020 "bison_parser.cpp" break; - case 228: /* comp_expr: operand '<' operand */ -#line 1074 "bison_parser.y" + case 234: /* comp_expr: operand '<' operand */ +#line 1153 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4909 "bison_parser.cpp" +#line 5026 "bison_parser.cpp" break; - case 229: /* comp_expr: operand '>' operand */ -#line 1075 "bison_parser.y" + case 235: /* comp_expr: operand '>' operand */ +#line 1154 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4915 "bison_parser.cpp" +#line 5032 "bison_parser.cpp" break; - case 230: /* comp_expr: operand LESSEQ operand */ -#line 1076 "bison_parser.y" + case 236: /* comp_expr: operand LESSEQ operand */ +#line 1155 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4921 "bison_parser.cpp" +#line 5038 "bison_parser.cpp" break; - case 231: /* comp_expr: operand GREATEREQ operand */ -#line 1077 "bison_parser.y" + case 237: /* comp_expr: operand GREATEREQ operand */ +#line 1156 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4927 "bison_parser.cpp" +#line 5044 "bison_parser.cpp" break; - case 232: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1081 "bison_parser.y" + case 238: /* function_expr: IDENTIFIER '(' ')' opt_window */ +#line 1160 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 4933 "bison_parser.cpp" +#line 5050 "bison_parser.cpp" break; - case 233: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1082 "bison_parser.y" + case 239: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ +#line 1161 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 4939 "bison_parser.cpp" +#line 5056 "bison_parser.cpp" break; - case 234: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1086 "bison_parser.y" + case 240: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ +#line 1165 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 4945 "bison_parser.cpp" +#line 5062 "bison_parser.cpp" break; - case 235: /* opt_window: %empty */ -#line 1087 "bison_parser.y" + case 241: /* opt_window: %empty */ +#line 1166 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 4951 "bison_parser.cpp" +#line 5068 "bison_parser.cpp" break; - case 236: /* opt_partition: PARTITION BY expr_list */ -#line 1089 "bison_parser.y" + case 242: /* opt_partition: PARTITION BY expr_list */ +#line 1168 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4957 "bison_parser.cpp" +#line 5074 "bison_parser.cpp" break; - case 237: /* opt_partition: %empty */ -#line 1090 "bison_parser.y" + case 243: /* opt_partition: %empty */ +#line 1169 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4963 "bison_parser.cpp" +#line 5080 "bison_parser.cpp" break; - case 238: /* opt_frame_clause: frame_type frame_bound */ -#line 1095 "bison_parser.y" + case 244: /* opt_frame_clause: frame_type frame_bound */ +#line 1174 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 4969 "bison_parser.cpp" +#line 5086 "bison_parser.cpp" break; - case 239: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1096 "bison_parser.y" + case 245: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ +#line 1175 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 4975 "bison_parser.cpp" +#line 5092 "bison_parser.cpp" break; - case 240: /* opt_frame_clause: %empty */ -#line 1097 "bison_parser.y" + case 246: /* opt_frame_clause: %empty */ +#line 1176 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 4983 "bison_parser.cpp" +#line 5100 "bison_parser.cpp" break; - case 241: /* frame_type: RANGE */ -#line 1101 "bison_parser.y" + case 247: /* frame_type: RANGE */ +#line 1180 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 4989 "bison_parser.cpp" +#line 5106 "bison_parser.cpp" break; - case 242: /* frame_type: ROWS */ -#line 1102 "bison_parser.y" + case 248: /* frame_type: ROWS */ +#line 1181 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 4995 "bison_parser.cpp" +#line 5112 "bison_parser.cpp" break; - case 243: /* frame_type: GROUPS */ -#line 1103 "bison_parser.y" + case 249: /* frame_type: GROUPS */ +#line 1182 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5001 "bison_parser.cpp" +#line 5118 "bison_parser.cpp" break; - case 244: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1105 "bison_parser.y" + case 250: /* frame_bound: UNBOUNDED PRECEDING */ +#line 1184 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5007 "bison_parser.cpp" +#line 5124 "bison_parser.cpp" break; - case 245: /* frame_bound: INTVAL PRECEDING */ -#line 1106 "bison_parser.y" + case 251: /* frame_bound: INTVAL PRECEDING */ +#line 1185 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5013 "bison_parser.cpp" +#line 5130 "bison_parser.cpp" break; - case 246: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1107 "bison_parser.y" + case 252: /* frame_bound: UNBOUNDED FOLLOWING */ +#line 1186 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5019 "bison_parser.cpp" +#line 5136 "bison_parser.cpp" break; - case 247: /* frame_bound: INTVAL FOLLOWING */ -#line 1108 "bison_parser.y" + case 253: /* frame_bound: INTVAL FOLLOWING */ +#line 1187 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5025 "bison_parser.cpp" +#line 5142 "bison_parser.cpp" break; - case 248: /* frame_bound: CURRENT_ROW */ -#line 1109 "bison_parser.y" + case 254: /* frame_bound: CURRENT_ROW */ +#line 1188 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5031 "bison_parser.cpp" +#line 5148 "bison_parser.cpp" break; - case 249: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1111 "bison_parser.y" + case 255: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1190 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5037 "bison_parser.cpp" +#line 5154 "bison_parser.cpp" break; - case 250: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1113 "bison_parser.y" + case 256: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1192 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5043 "bison_parser.cpp" +#line 5160 "bison_parser.cpp" break; - case 251: /* datetime_field: SECOND */ -#line 1115 "bison_parser.y" + case 257: /* datetime_field: SECOND */ +#line 1194 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5049 "bison_parser.cpp" +#line 5166 "bison_parser.cpp" break; - case 252: /* datetime_field: MINUTE */ -#line 1116 "bison_parser.y" + case 258: /* datetime_field: MINUTE */ +#line 1195 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5055 "bison_parser.cpp" +#line 5172 "bison_parser.cpp" break; - case 253: /* datetime_field: HOUR */ -#line 1117 "bison_parser.y" + case 259: /* datetime_field: HOUR */ +#line 1196 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5061 "bison_parser.cpp" +#line 5178 "bison_parser.cpp" break; - case 254: /* datetime_field: DAY */ -#line 1118 "bison_parser.y" + case 260: /* datetime_field: DAY */ +#line 1197 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5067 "bison_parser.cpp" +#line 5184 "bison_parser.cpp" break; - case 255: /* datetime_field: MONTH */ -#line 1119 "bison_parser.y" + case 261: /* datetime_field: MONTH */ +#line 1198 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5073 "bison_parser.cpp" +#line 5190 "bison_parser.cpp" break; - case 256: /* datetime_field: YEAR */ -#line 1120 "bison_parser.y" + case 262: /* datetime_field: YEAR */ +#line 1199 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5079 "bison_parser.cpp" +#line 5196 "bison_parser.cpp" break; - case 257: /* datetime_field_plural: SECONDS */ -#line 1122 "bison_parser.y" + case 263: /* datetime_field_plural: SECONDS */ +#line 1201 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5085 "bison_parser.cpp" +#line 5202 "bison_parser.cpp" break; - case 258: /* datetime_field_plural: MINUTES */ -#line 1123 "bison_parser.y" + case 264: /* datetime_field_plural: MINUTES */ +#line 1202 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5091 "bison_parser.cpp" +#line 5208 "bison_parser.cpp" break; - case 259: /* datetime_field_plural: HOURS */ -#line 1124 "bison_parser.y" + case 265: /* datetime_field_plural: HOURS */ +#line 1203 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5097 "bison_parser.cpp" +#line 5214 "bison_parser.cpp" break; - case 260: /* datetime_field_plural: DAYS */ -#line 1125 "bison_parser.y" + case 266: /* datetime_field_plural: DAYS */ +#line 1204 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5103 "bison_parser.cpp" +#line 5220 "bison_parser.cpp" break; - case 261: /* datetime_field_plural: MONTHS */ -#line 1126 "bison_parser.y" + case 267: /* datetime_field_plural: MONTHS */ +#line 1205 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5109 "bison_parser.cpp" +#line 5226 "bison_parser.cpp" break; - case 262: /* datetime_field_plural: YEARS */ -#line 1127 "bison_parser.y" + case 268: /* datetime_field_plural: YEARS */ +#line 1206 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5115 "bison_parser.cpp" +#line 5232 "bison_parser.cpp" break; - case 265: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1131 "bison_parser.y" + case 271: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1210 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5121 "bison_parser.cpp" +#line 5238 "bison_parser.cpp" break; - case 266: /* array_index: operand '[' int_literal ']' */ -#line 1133 "bison_parser.y" + case 272: /* array_index: operand '[' int_literal ']' */ +#line 1212 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5127 "bison_parser.cpp" +#line 5244 "bison_parser.cpp" break; - case 267: /* between_expr: operand BETWEEN operand AND operand */ -#line 1135 "bison_parser.y" + case 273: /* between_expr: operand BETWEEN operand AND operand */ +#line 1214 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5133 "bison_parser.cpp" +#line 5250 "bison_parser.cpp" break; - case 268: /* column_name: IDENTIFIER */ -#line 1137 "bison_parser.y" + case 274: /* column_name: IDENTIFIER */ +#line 1216 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5139 "bison_parser.cpp" +#line 5256 "bison_parser.cpp" break; - case 269: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1138 "bison_parser.y" + case 275: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1217 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5145 "bison_parser.cpp" +#line 5262 "bison_parser.cpp" break; - case 270: /* column_name: '*' */ -#line 1139 "bison_parser.y" + case 276: /* column_name: '*' */ +#line 1218 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5151 "bison_parser.cpp" +#line 5268 "bison_parser.cpp" break; - case 271: /* column_name: IDENTIFIER '.' '*' */ -#line 1140 "bison_parser.y" + case 277: /* column_name: IDENTIFIER '.' '*' */ +#line 1219 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5157 "bison_parser.cpp" +#line 5274 "bison_parser.cpp" break; - case 279: /* string_literal: STRING */ -#line 1144 "bison_parser.y" + case 285: /* string_literal: STRING */ +#line 1223 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5163 "bison_parser.cpp" +#line 5280 "bison_parser.cpp" break; - case 280: /* bool_literal: TRUE */ -#line 1146 "bison_parser.y" + case 286: /* bool_literal: TRUE */ +#line 1225 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5169 "bison_parser.cpp" +#line 5286 "bison_parser.cpp" break; - case 281: /* bool_literal: FALSE */ -#line 1147 "bison_parser.y" + case 287: /* bool_literal: FALSE */ +#line 1226 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5175 "bison_parser.cpp" +#line 5292 "bison_parser.cpp" break; - case 282: /* num_literal: FLOATVAL */ -#line 1149 "bison_parser.y" + case 288: /* num_literal: FLOATVAL */ +#line 1228 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5181 "bison_parser.cpp" +#line 5298 "bison_parser.cpp" break; - case 284: /* int_literal: INTVAL */ -#line 1152 "bison_parser.y" + case 290: /* int_literal: INTVAL */ +#line 1231 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5187 "bison_parser.cpp" +#line 5304 "bison_parser.cpp" break; - case 285: /* null_literal: NULL */ -#line 1154 "bison_parser.y" + case 291: /* null_literal: NULL */ +#line 1233 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5193 "bison_parser.cpp" +#line 5310 "bison_parser.cpp" break; - case 286: /* date_literal: DATE STRING */ -#line 1156 "bison_parser.y" + case 292: /* date_literal: DATE STRING */ +#line 1235 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5204,17 +5321,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5208 "bison_parser.cpp" +#line 5325 "bison_parser.cpp" break; - case 287: /* interval_literal: INTVAL duration_field */ -#line 1167 "bison_parser.y" + case 293: /* interval_literal: INTVAL duration_field */ +#line 1246 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5214 "bison_parser.cpp" +#line 5331 "bison_parser.cpp" break; - case 288: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1168 "bison_parser.y" + case 294: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1247 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5226,11 +5343,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5230 "bison_parser.cpp" +#line 5347 "bison_parser.cpp" break; - case 289: /* interval_literal: INTERVAL STRING */ -#line 1179 "bison_parser.y" + case 295: /* interval_literal: INTERVAL STRING */ +#line 1258 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5262,61 +5379,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5266 "bison_parser.cpp" +#line 5383 "bison_parser.cpp" break; - case 290: /* param_expr: '?' */ -#line 1211 "bison_parser.y" + case 296: /* param_expr: '?' */ +#line 1290 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5276 "bison_parser.cpp" +#line 5393 "bison_parser.cpp" break; - case 292: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1220 "bison_parser.y" + case 298: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1299 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5287 "bison_parser.cpp" +#line 5404 "bison_parser.cpp" break; - case 296: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1229 "bison_parser.y" + case 302: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1308 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5298 "bison_parser.cpp" +#line 5415 "bison_parser.cpp" break; - case 297: /* table_ref_commalist: table_ref_atomic */ -#line 1236 "bison_parser.y" + case 303: /* table_ref_commalist: table_ref_atomic */ +#line 1315 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5307 "bison_parser.cpp" +#line 5424 "bison_parser.cpp" break; - case 298: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1240 "bison_parser.y" + case 304: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1319 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5316 "bison_parser.cpp" +#line 5433 "bison_parser.cpp" break; - case 299: /* table_ref_name: table_name opt_table_alias */ -#line 1245 "bison_parser.y" + case 305: /* table_ref_name: table_name opt_table_alias */ +#line 1324 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5324,215 +5441,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5328 "bison_parser.cpp" +#line 5445 "bison_parser.cpp" break; - case 300: /* table_ref_name_no_alias: table_name */ -#line 1253 "bison_parser.y" + case 306: /* table_ref_name_no_alias: table_name */ +#line 1332 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5338 "bison_parser.cpp" +#line 5455 "bison_parser.cpp" break; - case 301: /* table_name: IDENTIFIER */ -#line 1259 "bison_parser.y" + case 307: /* table_name: IDENTIFIER */ +#line 1338 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5347 "bison_parser.cpp" +#line 5464 "bison_parser.cpp" break; - case 302: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1263 "bison_parser.y" + case 308: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1342 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5356 "bison_parser.cpp" +#line 5473 "bison_parser.cpp" break; - case 303: /* opt_index_name: IDENTIFIER */ -#line 1268 "bison_parser.y" + case 309: /* opt_index_name: IDENTIFIER */ +#line 1347 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5362 "bison_parser.cpp" +#line 5479 "bison_parser.cpp" break; - case 304: /* opt_index_name: %empty */ -#line 1269 "bison_parser.y" + case 310: /* opt_index_name: %empty */ +#line 1348 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5368 "bison_parser.cpp" +#line 5485 "bison_parser.cpp" break; - case 306: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1271 "bison_parser.y" + case 312: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1350 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5374 "bison_parser.cpp" +#line 5491 "bison_parser.cpp" break; - case 308: /* opt_table_alias: %empty */ -#line 1273 "bison_parser.y" + case 314: /* opt_table_alias: %empty */ +#line 1352 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5380 "bison_parser.cpp" +#line 5497 "bison_parser.cpp" break; - case 309: /* alias: AS IDENTIFIER */ -#line 1275 "bison_parser.y" + case 315: /* alias: AS IDENTIFIER */ +#line 1354 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5386 "bison_parser.cpp" +#line 5503 "bison_parser.cpp" break; - case 310: /* alias: IDENTIFIER */ -#line 1276 "bison_parser.y" + case 316: /* alias: IDENTIFIER */ +#line 1355 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5392 "bison_parser.cpp" +#line 5509 "bison_parser.cpp" break; - case 312: /* opt_alias: %empty */ -#line 1278 "bison_parser.y" + case 318: /* opt_alias: %empty */ +#line 1357 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5398 "bison_parser.cpp" +#line 5515 "bison_parser.cpp" break; - case 313: /* opt_locking_clause: opt_locking_clause_list */ -#line 1284 "bison_parser.y" + case 319: /* opt_locking_clause: opt_locking_clause_list */ +#line 1363 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5404 "bison_parser.cpp" +#line 5521 "bison_parser.cpp" break; - case 314: /* opt_locking_clause: %empty */ -#line 1285 "bison_parser.y" + case 320: /* opt_locking_clause: %empty */ +#line 1364 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5410 "bison_parser.cpp" +#line 5527 "bison_parser.cpp" break; - case 315: /* opt_locking_clause_list: locking_clause */ -#line 1287 "bison_parser.y" + case 321: /* opt_locking_clause_list: locking_clause */ +#line 1366 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5419 "bison_parser.cpp" +#line 5536 "bison_parser.cpp" break; - case 316: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1291 "bison_parser.y" + case 322: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ +#line 1370 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5428 "bison_parser.cpp" +#line 5545 "bison_parser.cpp" break; - case 317: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1296 "bison_parser.y" + case 323: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ +#line 1375 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5439 "bison_parser.cpp" +#line 5556 "bison_parser.cpp" break; - case 318: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1302 "bison_parser.y" + case 324: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ +#line 1381 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5450 "bison_parser.cpp" +#line 5567 "bison_parser.cpp" break; - case 319: /* row_lock_mode: UPDATE */ -#line 1309 "bison_parser.y" + case 325: /* row_lock_mode: UPDATE */ +#line 1388 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5456 "bison_parser.cpp" +#line 5573 "bison_parser.cpp" break; - case 320: /* row_lock_mode: NO KEY UPDATE */ -#line 1310 "bison_parser.y" + case 326: /* row_lock_mode: NO KEY UPDATE */ +#line 1389 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5462 "bison_parser.cpp" +#line 5579 "bison_parser.cpp" break; - case 321: /* row_lock_mode: SHARE */ -#line 1311 "bison_parser.y" + case 327: /* row_lock_mode: SHARE */ +#line 1390 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5468 "bison_parser.cpp" +#line 5585 "bison_parser.cpp" break; - case 322: /* row_lock_mode: KEY SHARE */ -#line 1312 "bison_parser.y" + case 328: /* row_lock_mode: KEY SHARE */ +#line 1391 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5474 "bison_parser.cpp" +#line 5591 "bison_parser.cpp" break; - case 323: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1314 "bison_parser.y" + case 329: /* opt_row_lock_policy: SKIP LOCKED */ +#line 1393 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5480 "bison_parser.cpp" +#line 5597 "bison_parser.cpp" break; - case 324: /* opt_row_lock_policy: NOWAIT */ -#line 1315 "bison_parser.y" + case 330: /* opt_row_lock_policy: NOWAIT */ +#line 1394 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5486 "bison_parser.cpp" +#line 5603 "bison_parser.cpp" break; - case 325: /* opt_row_lock_policy: %empty */ -#line 1316 "bison_parser.y" + case 331: /* opt_row_lock_policy: %empty */ +#line 1395 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5492 "bison_parser.cpp" +#line 5609 "bison_parser.cpp" break; - case 327: /* opt_with_clause: %empty */ -#line 1322 "bison_parser.y" + case 333: /* opt_with_clause: %empty */ +#line 1401 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5498 "bison_parser.cpp" +#line 5615 "bison_parser.cpp" break; - case 328: /* with_clause: WITH with_description_list */ -#line 1324 "bison_parser.y" + case 334: /* with_clause: WITH with_description_list */ +#line 1403 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5504 "bison_parser.cpp" +#line 5621 "bison_parser.cpp" break; - case 329: /* with_description_list: with_description */ -#line 1326 "bison_parser.y" + case 335: /* with_description_list: with_description */ +#line 1405 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5513 "bison_parser.cpp" +#line 5630 "bison_parser.cpp" break; - case 330: /* with_description_list: with_description_list ',' with_description */ -#line 1330 "bison_parser.y" + case 336: /* with_description_list: with_description_list ',' with_description */ +#line 1409 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5522 "bison_parser.cpp" +#line 5639 "bison_parser.cpp" break; - case 331: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1335 "bison_parser.y" + case 337: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1414 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5532 "bison_parser.cpp" +#line 5649 "bison_parser.cpp" break; - case 332: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1345 "bison_parser.y" + case 338: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1424 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5540,11 +5657,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5544 "bison_parser.cpp" +#line 5661 "bison_parser.cpp" break; - case 333: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1352 "bison_parser.y" + case 339: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1431 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5553,11 +5670,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5557 "bison_parser.cpp" +#line 5674 "bison_parser.cpp" break; - case 334: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1360 "bison_parser.y" + case 340: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ +#line 1439 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5566,89 +5683,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5570 "bison_parser.cpp" +#line 5687 "bison_parser.cpp" break; - case 335: /* opt_join_type: INNER */ -#line 1369 "bison_parser.y" + case 341: /* opt_join_type: INNER */ +#line 1448 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5576 "bison_parser.cpp" +#line 5693 "bison_parser.cpp" break; - case 336: /* opt_join_type: LEFT OUTER */ -#line 1370 "bison_parser.y" + case 342: /* opt_join_type: LEFT OUTER */ +#line 1449 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5582 "bison_parser.cpp" +#line 5699 "bison_parser.cpp" break; - case 337: /* opt_join_type: LEFT */ -#line 1371 "bison_parser.y" + case 343: /* opt_join_type: LEFT */ +#line 1450 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5588 "bison_parser.cpp" +#line 5705 "bison_parser.cpp" break; - case 338: /* opt_join_type: RIGHT OUTER */ -#line 1372 "bison_parser.y" + case 344: /* opt_join_type: RIGHT OUTER */ +#line 1451 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5594 "bison_parser.cpp" +#line 5711 "bison_parser.cpp" break; - case 339: /* opt_join_type: RIGHT */ -#line 1373 "bison_parser.y" + case 345: /* opt_join_type: RIGHT */ +#line 1452 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5600 "bison_parser.cpp" +#line 5717 "bison_parser.cpp" break; - case 340: /* opt_join_type: FULL OUTER */ -#line 1374 "bison_parser.y" + case 346: /* opt_join_type: FULL OUTER */ +#line 1453 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5606 "bison_parser.cpp" +#line 5723 "bison_parser.cpp" break; - case 341: /* opt_join_type: OUTER */ -#line 1375 "bison_parser.y" + case 347: /* opt_join_type: OUTER */ +#line 1454 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5612 "bison_parser.cpp" +#line 5729 "bison_parser.cpp" break; - case 342: /* opt_join_type: FULL */ -#line 1376 "bison_parser.y" + case 348: /* opt_join_type: FULL */ +#line 1455 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5618 "bison_parser.cpp" +#line 5735 "bison_parser.cpp" break; - case 343: /* opt_join_type: CROSS */ -#line 1377 "bison_parser.y" + case 349: /* opt_join_type: CROSS */ +#line 1456 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5624 "bison_parser.cpp" +#line 5741 "bison_parser.cpp" break; - case 344: /* opt_join_type: %empty */ -#line 1378 "bison_parser.y" + case 350: /* opt_join_type: %empty */ +#line 1457 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5630 "bison_parser.cpp" +#line 5747 "bison_parser.cpp" break; - case 348: /* ident_commalist: IDENTIFIER */ -#line 1389 "bison_parser.y" + case 354: /* ident_commalist: IDENTIFIER */ +#line 1468 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5639 "bison_parser.cpp" +#line 5756 "bison_parser.cpp" break; - case 349: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1393 "bison_parser.y" + case 355: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1472 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5648 "bison_parser.cpp" +#line 5765 "bison_parser.cpp" break; -#line 5652 "bison_parser.cpp" +#line 5769 "bison_parser.cpp" default: break; } @@ -5877,7 +5994,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1399 "bison_parser.y" +#line 1478 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 8357584b..54d13f26 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -258,14 +258,16 @@ extern int hsql_debug; SQL_FOREIGN = 426, /* FOREIGN */ SQL_KEY = 427, /* KEY */ SQL_REFERENCES = 428, /* REFERENCES */ - SQL_EQUALS = 429, /* EQUALS */ - SQL_NOTEQUALS = 430, /* NOTEQUALS */ - SQL_LESS = 431, /* LESS */ - SQL_GREATER = 432, /* GREATER */ - SQL_LESSEQ = 433, /* LESSEQ */ - SQL_GREATEREQ = 434, /* GREATEREQ */ - SQL_NOTNULL = 435, /* NOTNULL */ - SQL_UMINUS = 436 /* UMINUS */ + SQL_DELIMITER = 429, /* DELIMITER */ + SQL_QUOTE = 430, /* QUOTE */ + SQL_EQUALS = 431, /* EQUALS */ + SQL_NOTEQUALS = 432, /* NOTEQUALS */ + SQL_LESS = 433, /* LESS */ + SQL_GREATER = 434, /* GREATER */ + SQL_LESSEQ = 435, /* LESSEQ */ + SQL_GREATEREQ = 436, /* GREATEREQ */ + SQL_NOTNULL = 437, /* NOTNULL */ + SQL_UMINUS = 438 /* UMINUS */ }; typedef enum hsql_tokentype hsql_token_kind_t; #endif @@ -347,7 +349,7 @@ union HSQL_STYPE // clang-format off -#line 351 "bison_parser.h" +#line 353 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index f907a494..4a65e566 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -230,6 +230,7 @@ %token NOWAIT SKIP LOCKED SHARE %token RANGE ROWS GROUPS UNBOUNDED FOLLOWING PRECEDING CURRENT_ROW %token UNIQUE PRIMARY FOREIGN KEY REFERENCES +%token DELIMITER QUOTE /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -467,6 +468,18 @@ import_statement : IMPORT FROM file_type FILE file_path INTO table_name { $$->encoding = $5->encoding; $5->encoding = nullptr; } + if ($5->delimiter) { + $$->delimiter = $5->delimiter; + $5->delimiter = nullptr; + } + if ($5->null) { + $$->null = $5->null; + $5->null = nullptr; + } + if ($5->quote) { + $$->quote = $5->quote; + $5->quote = nullptr; + } delete $5; }; @@ -517,6 +530,48 @@ import_export_options : import_export_options ',' FORMAT file_type { | ENCODING STRING { $$ = new ImportExportOptions{}; $$->encoding = $2; +} +| import_export_options ',' DELIMITER STRING { + if ($1->delimiter) { + delete $1; + free($4); + yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + YYERROR; + } + $1->delimiter = $4; + $$ = $1; +} +| DELIMITER STRING { + $$ = new ImportExportOptions{}; + $$->delimiter = $2; +} +| import_export_options ',' NULL STRING { + if ($1->null) { + delete $1; + free($4); + yyerror(&yyloc, result, scanner, "Null string must only be provided once."); + YYERROR; + } + $1->null = $4; + $$ = $1; +} +| NULL STRING { + $$ = new ImportExportOptions{}; + $$->null = $2; +} +| import_export_options ',' QUOTE STRING { + if ($1->quote) { + delete $1; + free($4); + yyerror(&yyloc, result, scanner, "Quote string must only be provided once."); + YYERROR; + } + $1->quote = $4; + $$ = $1; +} +| QUOTE STRING { + $$ = new ImportExportOptions{}; + $$->quote = $2; }; /****************************** @@ -533,6 +588,18 @@ export_statement : COPY table_name TO file_path opt_import_export_options { $$->encoding = $5->encoding; $5->encoding = nullptr; } + if ($5->delimiter) { + $$->delimiter = $5->delimiter; + $5->delimiter = nullptr; + } + if ($5->null) { + $$->null = $5->null; + $5->null = nullptr; + } + if ($5->quote) { + $$->quote = $5->quote; + $5->quote = nullptr; + } delete $5; } | COPY select_with_paren TO file_path opt_import_export_options { @@ -543,6 +610,18 @@ export_statement : COPY table_name TO file_path opt_import_export_options { $$->encoding = $5->encoding; $5->encoding = nullptr; } + if ($5->delimiter) { + $$->delimiter = $5->delimiter; + $5->delimiter = nullptr; + } + if ($5->null) { + $$->null = $5->null; + $5->null = nullptr; + } + if ($5->quote) { + $$->quote = $5->quote; + $5->quote = nullptr; + } delete $5; }; diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index c544b92f..688a0115 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 189 -#define YY_END_OF_BUFFER 190 +#define YY_NUM_RULES 191 +#define YY_END_OF_BUFFER 192 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,29 +582,29 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1368] = +static const flex_int16_t yy_accept[1390] = { 0, - 0, 0, 186, 186, 2, 2, 190, 188, 4, 4, - 188, 188, 177, 184, 177, 177, 181, 177, 177, 177, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 177, 186, 187, 2, 2, 3, + 0, 0, 188, 188, 2, 2, 192, 190, 4, 4, + 190, 190, 179, 186, 179, 179, 183, 179, 179, 179, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 179, 188, 189, 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, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 172, 0, 1, 0, - 179, 178, 181, 174, 173, 171, 175, 183, 183, 183, - - 183, 183, 183, 12, 183, 183, 183, 19, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 73, 183, 183, 76, 85, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 103, 183, 183, - 108, 111, 112, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 149, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 176, 186, 185, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 4, 174, 0, + 1, 0, 181, 180, 183, 176, 175, 173, 177, 185, + + 185, 185, 185, 185, 185, 12, 185, 185, 185, 19, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 74, 185, 185, 77, 86, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 104, + 185, 185, 109, 112, 113, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 151, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 178, 188, 187, 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, @@ -614,23 +614,22 @@ static const flex_int16_t yy_accept[1368] = 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, 182, 0, 178, 5, - 183, 7, 183, 183, 10, 183, 13, 183, 183, 183, - - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 34, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 49, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 60, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 80, 183, 183, 88, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 104, 183, 183, 183, 109, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 135, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 150, - - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 184, 0, 180, 5, 185, 7, 185, 185, 10, 185, + + 13, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 34, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 50, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 61, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 81, 185, 185, 89, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 105, 185, + 185, 185, 110, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 137, 185, 185, 185, 185, 185, 185, 185, + + 185, 185, 185, 185, 152, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 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, @@ -638,26 +637,27 @@ static const flex_int16_t yy_accept[1368] = 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, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 20, 183, 22, 23, 24, 183, 183, 183, - 29, 183, 183, 183, 32, 35, 183, 183, 183, 183, - 183, 41, 183, 183, 183, 46, 47, 183, 183, 183, - 183, 183, 183, 183, 183, 57, 183, 183, 183, 183, - 63, 64, 183, 183, 68, 183, 70, 71, 183, 183, - - 183, 183, 183, 183, 84, 183, 87, 89, 90, 183, - 92, 183, 183, 95, 183, 183, 183, 183, 183, 106, - 183, 183, 183, 183, 115, 183, 183, 118, 183, 183, - 183, 183, 123, 183, 183, 183, 183, 183, 129, 183, - 183, 183, 183, 137, 138, 183, 183, 183, 183, 183, - 145, 146, 147, 183, 152, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 162, 183, 164, 183, 166, 167, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 20, 185, + 22, 23, 24, 185, 185, 185, 29, 185, 185, 185, + 32, 35, 185, 185, 185, 185, 185, 185, 42, 185, + 185, 185, 47, 48, 185, 185, 185, 185, 185, 185, + 185, 185, 58, 185, 185, 185, 185, 64, 65, 185, + + 185, 69, 185, 71, 72, 185, 185, 185, 185, 185, + 185, 85, 185, 88, 90, 91, 185, 93, 185, 185, + 96, 185, 185, 185, 185, 185, 107, 185, 185, 185, + 185, 116, 185, 185, 119, 185, 185, 185, 185, 185, + 125, 185, 185, 185, 185, 185, 131, 185, 185, 185, + 185, 139, 140, 185, 185, 185, 185, 185, 147, 148, + 149, 185, 154, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 164, 185, 166, 185, 168, 169, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -670,19 +670,20 @@ static const flex_int16_t yy_accept[1368] = 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, 0, 6, - - 8, 183, 11, 183, 15, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 31, 183, 183, 183, 183, 183, - 183, 40, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 56, 58, 183, 183, 183, 183, 66, - 183, 72, 74, 183, 77, 78, 183, 183, 183, 183, - 91, 93, 183, 96, 97, 183, 100, 183, 183, 183, - 183, 113, 114, 183, 183, 183, 183, 183, 122, 183, - 183, 183, 127, 183, 183, 183, 183, 136, 183, 183, - 183, 142, 183, 183, 183, 183, 183, 155, 183, 183, - 183, 159, 183, 183, 183, 165, 168, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, + 8, 185, 11, 185, 15, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 31, 185, 185, 185, 185, 185, + 185, 185, 41, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 57, 59, 185, 185, 185, 185, + 67, 185, 73, 75, 185, 78, 79, 185, 185, 185, + 185, 92, 94, 185, 97, 98, 185, 101, 185, 185, + 185, 185, 114, 115, 185, 185, 185, 185, 185, 123, + 124, 185, 185, 185, 129, 185, 185, 185, 185, 138, + 185, 185, 185, 144, 185, 185, 185, 185, 185, 157, + + 185, 185, 185, 161, 185, 185, 185, 167, 170, 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, @@ -692,48 +693,49 @@ static const flex_int16_t yy_accept[1368] = 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, 0, 183, 14, 183, - - 17, 183, 183, 183, 25, 27, 183, 30, 183, 183, - 183, 183, 183, 39, 183, 43, 183, 45, 183, 50, - 51, 183, 53, 183, 183, 183, 183, 62, 65, 67, - 69, 75, 79, 183, 183, 183, 86, 94, 98, 101, - 183, 105, 183, 110, 183, 183, 183, 183, 183, 183, - 125, 183, 183, 130, 132, 134, 183, 140, 183, 143, - 183, 183, 183, 183, 183, 156, 157, 158, 160, 183, - 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 185, 14, 185, 17, 185, 185, 185, 25, 27, + 185, 30, 185, 185, 185, 185, 185, 39, 185, 185, + 44, 185, 46, 185, 51, 52, 185, 54, 185, 185, + 185, 185, 63, 66, 68, 70, 76, 80, 185, 185, + 185, 87, 95, 99, 102, 185, 106, 185, 111, 185, + 185, 185, 185, 185, 185, 127, 185, 185, 132, 134, + 136, 185, 142, 185, 145, 185, 185, 185, 185, 185, + 158, 159, 160, 162, 185, 185, 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, 0, 9, 16, 18, - 21, 183, 26, 28, 183, 183, 183, 37, 38, 183, - 183, 183, 52, 54, 55, 183, 61, 81, 183, 183, - 99, 102, 183, 183, 183, 183, 120, 121, 183, 183, - 183, 131, 133, 183, 141, 183, 183, 183, 183, 183, - 161, 163, 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, 0, 9, 16, 18, 21, 185, 26, 28, + 185, 185, 185, 37, 38, 185, 185, 185, 185, 53, + 55, 56, 185, 62, 82, 185, 185, 100, 103, 185, + 185, 185, 185, 121, 122, 185, 185, 185, 133, 135, + 185, 143, 185, 185, 185, 185, 185, 163, 165, 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, 0, 183, - 0, 33, 183, 42, 44, 48, 183, 183, 83, 107, - 183, 183, 183, 183, 126, 128, 139, 183, 183, 183, - 153, 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 183, 0, 183, - 59, 82, 183, 117, 119, 183, 144, 148, 183, 154, - + 2, 2, 2, 2, 2, 2, 0, 185, 0, 33, + 185, 185, 43, 45, 49, 185, 185, 84, 108, 185, + 185, 185, 185, 128, 130, 141, 185, 185, 185, 155, + 185, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 0, 0, 36, 116, 124, - 183, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 169, 151, 2, 2, 2, 2, 0, 0, 2, 2, - 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, - 2, 2, 0, 0, 2, 2, 0, 170, 2, 2, - 0, 2, 0, 2, 180, 2, 0 + + 2, 2, 2, 2, 2, 2, 0, 185, 0, 185, + 40, 60, 83, 185, 118, 120, 185, 146, 150, 185, + 156, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 36, + 117, 126, 185, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 171, 153, 2, 2, 2, 2, 0, 0, + 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, + 0, 0, 2, 2, 0, 0, 2, 2, 0, 172, + 2, 2, 0, 2, 0, 2, 182, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -780,1315 +782,1334 @@ static const YY_CHAR yy_meta[77] = 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1375] = +static const flex_int16_t yy_base[1397] = { 0, - 0, 0, 852, 842, 76, 0, 842, 8955, 151, 153, - 786, 0, 8955, 8955, 149, 148, 160, 159, 778, 775, + 0, 0, 798, 797, 76, 0, 803, 9080, 151, 153, + 780, 0, 9080, 9080, 149, 148, 160, 159, 778, 775, 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, - 171, 215, 218, 244, 295, 257, 0, 309, 349, 392, - 163, 279, 226, 180, 676, 0, 741, 0, 237, 251, - 696, 702, 0, 0, 243, 378, 451, 237, 682, 680, - 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, - 532, 533, 534, 846, 895, 944, 547, 602, 990, 1042, - 307, 650, 587, 651, 596, 301, 8955, 666, 8955, 636, - 1107, 1117, 1128, 8955, 8955, 8955, 8955, 0, 218, 243, - - 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, - 694, 389, 345, 440, 710, 387, 388, 436, 439, 476, - 463, 763, 460, 465, 480, 542, 481, 501, 521, 535, - 591, 539, 546, 0, 584, 581, 627, 592, 607, 637, - 657, 658, 717, 646, 658, 686, 681, 734, 705, 720, - 717, 0, 751, 739, 757, 745, 764, 766, 755, 810, - 769, 792, 770, 810, 811, 808, 817, 803, 822, 823, - 842, 827, 820, 842, 871, 861, 858, 862, 866, 897, - 872, 859, 879, 8955, 0, 8955, 0, 396, 0, 631, - 0, 614, 1138, 1148, 1159, 0, 0, 0, 0, 942, - - 945, 1029, 990, 1156, 1034, 1155, 1202, 934, 1030, 1168, - 1199, 1218, 1258, 1251, 1270, 1285, 1337, 1334, 1345, 1372, - 1272, 1422, 1391, 1471, 1399, 1443, 1397, 1481, 1483, 1492, - 1519, 1531, 1535, 1546, 1577, 1576, 1594, 1624, 1673, 1623, - 1629, 1648, 1673, 1721, 1773, 1677, 1719, 1765, 1774, 1814, - 1817, 1838, 1861, 1830, 1874, 1897, 1712, 1909, 1941, 1730, - 1916, 1993, 1946, 1972, 1990, 2042, 2015, 2033, 2059, 2081, - 2093, 2095, 2127, 2123, 2145, 2147, 2183, 2230, 2191, 2177, - 2222, 2239, 2265, 2274, 2287, 0, 8955, 601, 2352, 0, - 882, 0, 903, 900, 0, 933, 0, 940, 954, 941, - - 960, 988, 1001, 1156, 1038, 1038, 1050, 1044, 1137, 1162, - 1145, 1147, 1166, 1153, 1166, 1203, 1216, 1260, 1221, 1220, - 1207, 1226, 1215, 1229, 1247, 0, 1280, 1309, 1317, 1309, - 1321, 1317, 1317, 1339, 1344, 1356, 1369, 1376, 1378, 1390, - 1379, 1412, 1422, 1423, 1426, 1437, 1436, 1449, 1451, 1480, - 1537, 1469, 1488, 0, 1490, 1516, 1530, 1537, 1593, 1538, - 1543, 1532, 1555, 1557, 0, 1592, 1602, 1606, 1613, 1638, - 1640, 1630, 1682, 1672, 1753, 1727, 1734, 1739, 1770, 1779, - 1761, 1782, 1779, 1776, 1795, 1790, 1838, 0, 1827, 1824, - 1867, 1880, 1875, 1876, 1887, 1888, 1886, 1918, 1932, 0, - - 1933, 1974, 1934, 1993, 1948, 1999, 1987, 1998, 2046, 2027, - 2032, 2064, 2045, 2074, 0, 600, 2362, 2355, 2356, 2357, - 2358, 2281, 2392, 2400, 2401, 2412, 2440, 2448, 2453, 2455, - 2469, 2518, 2494, 2519, 2532, 2568, 2544, 2580, 2578, 2609, - 2621, 2623, 2637, 2662, 2680, 2677, 2712, 2721, 2730, 2756, - 2771, 2769, 2774, 2810, 2819, 2824, 2854, 2826, 2829, 2869, - 2880, 2880, 2902, 2921, 2934, 2943, 2968, 2979, 2992, 3015, - 3017, 3032, 3058, 3066, 3080, 3092, 3104, 3106, 3118, 3130, - 3145, 3149, 3173, 3174, 3193, 3218, 3270, 3196, 3232, 3267, - 3231, 3292, 3295, 3320, 3327, 3341, 3355, 3366, 3380, 3395, - - 3447, 3395, 3497, 3430, 3473, 3414, 3493, 3532, 3541, 3544, - 3551, 3575, 3576, 3595, 3598, 3600, 3630, 3644, 3649, 3605, - 3659, 3683, 3697, 3701, 3737, 3741, 3749, 3754, 3781, 3797, - 3798, 3830, 3844, 3856, 3844, 3885, 3888, 3891, 3926, 3935, - 3944, 3970, 582, 2085, 2089, 2090, 2091, 2104, 2130, 2148, - 2147, 2171, 0, 2192, 0, 0, 2193, 2197, 2215, 2208, - 0, 2218, 2230, 2245, 2238, 0, 2248, 2273, 2277, 2283, - 2303, 2290, 2306, 2302, 2356, 0, 0, 2365, 2359, 2360, - 2357, 2403, 2428, 2431, 2429, 0, 2440, 2455, 2466, 2476, - 0, 0, 2485, 2475, 0, 2511, 0, 2510, 2526, 2517, - - 2555, 2564, 2569, 2600, 0, 2586, 0, 0, 0, 2591, - 0, 2601, 2626, 0, 2634, 2660, 2633, 2625, 2663, 0, - 2681, 2686, 2675, 2678, 0, 2688, 2716, 0, 2728, 2739, - 2740, 2738, 0, 2757, 2777, 2773, 2775, 2798, 0, 2791, - 2795, 2834, 2868, 0, 0, 2862, 2877, 2882, 2892, 2883, - 0, 0, 2883, 2904, 0, 2925, 2915, 2923, 2921, 2945, - 2931, 2950, 2956, 2982, 0, 2973, 0, 2992, 0, 2982, - 544, 3979, 3988, 4017, 4026, 4039, 4026, 4051, 4076, 4077, - 4089, 4111, 4119, 4133, 4145, 4159, 4171, 4197, 4185, 4199, - 4206, 4223, 4249, 4235, 4249, 4270, 4293, 4306, 4336, 4344, - - 4362, 4261, 4385, 4386, 4404, 4430, 4444, 4458, 4472, 4486, - 4502, 4528, 4519, 4545, 4553, 4567, 4579, 4597, 4605, 4619, - 4631, 4649, 4657, 4656, 4684, 4692, 4685, 4727, 4700, 4736, - 4752, 4797, 4766, 4794, 4808, 4827, 4838, 4841, 4857, 4871, - 4896, 4904, 4909, 4911, 4925, 4951, 4963, 4968, 4976, 4998, - 5017, 5036, 5051, 5077, 5080, 5089, 5115, 5133, 5134, 5159, - 5168, 5187, 5209, 5212, 5238, 5250, 5241, 5263, 4970, 5294, - 5289, 5302, 5307, 5024, 5321, 5343, 5346, 5351, 5365, 5387, - 5392, 5396, 5422, 5441, 5438, 5464, 5483, 5497, 5494, 5525, - 5449, 5542, 5537, 5576, 5577, 5578, 5590, 5592, 543, 0, - - 0, 3009, 0, 3040, 0, 3046, 3035, 3059, 3061, 3090, - 3085, 3094, 3110, 3142, 0, 3135, 3144, 3152, 3176, 3195, - 3210, 0, 3208, 3211, 3239, 3254, 3253, 3264, 3267, 3271, - 3286, 3302, 3313, 0, 0, 3300, 3323, 3316, 3337, 3342, - 3363, 0, 0, 3364, 0, 0, 3370, 3398, 3442, 3411, - 0, 0, 3420, 0, 0, 3434, 3438, 3458, 3443, 3460, - 3454, 0, 0, 3472, 3458, 3489, 3478, 3485, 0, 3510, - 3512, 3519, 0, 3530, 3550, 3567, 3575, 0, 3597, 3607, - 3640, 3624, 3639, 3640, 3660, 3662, 3663, 0, 3694, 3704, - 3707, 0, 3695, 3717, 3718, 0, 0, 536, 5622, 5625, - - 5633, 5636, 5676, 5684, 5685, 5710, 5738, 5729, 5764, 5763, - 5764, 5792, 5814, 5816, 5808, 5828, 5846, 5864, 5862, 5882, - 5890, 5912, 5920, 5919, 5944, 5946, 5968, 5970, 5994, 5999, - 6019, 6022, 6024, 6048, 6060, 6063, 6089, 6067, 6105, 6116, - 6108, 6146, 6149, 6152, 6160, 6190, 6203, 6201, 6232, 6245, - 6246, 6276, 6287, 6290, 6315, 6320, 6334, 6358, 6376, 6367, - 6407, 6411, 6419, 6434, 6459, 6460, 6488, 6489, 6513, 6514, - 6527, 6539, 6542, 6567, 6581, 6568, 6593, 6596, 6622, 6635, - 6627, 6667, 6670, 6691, 6719, 6683, 6727, 6739, 6752, 6744, - 6780, 6778, 6799, 6825, 6822, 6843, 526, 3718, 0, 3748, - - 0, 3753, 3765, 3751, 3753, 0, 3765, 0, 3790, 3801, - 3812, 3805, 3799, 0, 3822, 0, 3822, 0, 3819, 0, - 0, 3862, 0, 3875, 3873, 3892, 3903, 0, 0, 0, - 0, 0, 0, 3903, 3930, 3942, 0, 0, 3932, 0, - 3948, 0, 3968, 0, 3972, 3992, 4001, 4031, 4018, 4032, - 0, 4044, 4049, 4061, 4077, 0, 4091, 0, 4094, 0, - 4107, 4109, 4115, 4110, 4136, 0, 0, 0, 0, 4134, - 4144, 525, 6860, 6865, 6867, 6881, 6897, 6910, 6919, 6935, - 6944, 6953, 6977, 6986, 6995, 7026, 7030, 7039, 7070, 7081, - 7084, 7112, 7125, 7126, 7156, 7167, 7169, 7178, 7203, 7212, - - 7214, 7221, 7256, 7257, 7265, 7298, 7301, 7307, 7342, 7350, - 7369, 7364, 7394, 7396, 7410, 7419, 7438, 7452, 7471, 7480, - 7500, 7509, 7524, 7538, 7516, 7559, 7565, 7589, 7603, 7612, - 7631, 7645, 7654, 7673, 7687, 7701, 7720, 7743, 7744, 7774, - 7785, 7788, 7804, 7818, 7834, 7837, 529, 0, 0, 0, - 0, 4157, 0, 0, 436, 4161, 4177, 0, 0, 4177, - 4196, 4219, 0, 0, 0, 4258, 0, 0, 4276, 4280, - 0, 0, 4284, 4299, 4293, 4301, 0, 0, 4319, 4304, - 4316, 0, 0, 4320, 0, 4325, 4333, 4341, 4361, 4364, - 0, 0, 527, 7848, 7872, 7878, 7881, 7901, 7916, 7925, - - 7955, 7940, 7970, 7969, 7984, 7999, 8008, 8038, 8033, 8052, - 8074, 8013, 8054, 8084, 8108, 8095, 8131, 8139, 8150, 8151, - 8156, 8185, 8188, 8199, 8218, 8232, 8251, 8262, 8281, 8292, - 8295, 8311, 8335, 8341, 8358, 8380, 8388, 8393, 526, 4361, - 4434, 0, 4360, 0, 0, 0, 4377, 4374, 0, 0, - 4384, 4398, 4412, 4415, 0, 0, 0, 4405, 4419, 4429, - 0, 4436, 524, 8418, 4781, 8406, 8432, 8444, 8446, 8468, - 8480, 8498, 8506, 8524, 8546, 8551, 8555, 8568, 8590, 8598, - 8603, 8612, 8642, 8644, 8647, 8656, 514, 438, 4433, 4446, - 0, 0, 4434, 0, 0, 4469, 0, 0, 4477, 0, - - 506, 8710, 4493, 8688, 8696, 8697, 8731, 8739, 8742, 8745, - 8775, 8783, 8795, 8800, 470, 4558, 4499, 0, 0, 0, - 4522, 468, 4698, 4536, 8803, 8808, 8844, 8842, 465, 4563, - 8955, 0, 418, 4565, 0, 8851, 418, 4572, 390, 4578, - 388, 4583, 386, 4591, 347, 4609, 343, 4617, 338, 4628, - 335, 4636, 334, 4653, 332, 4679, 303, 8955, 293, 0, - 299, 286, 248, 243, 8955, 0, 8955, 8924, 8929, 201, - 8934, 8939, 8944, 8949 + 171, 215, 218, 244, 295, 257, 156, 309, 349, 392, + 307, 208, 226, 0, 174, 689, 0, 748, 0, 204, + 251, 702, 715, 0, 0, 232, 378, 451, 240, 682, + 673, 470, 546, 600, 652, 700, 752, 384, 458, 795, + 466, 532, 533, 534, 846, 895, 944, 589, 650, 990, + 1042, 644, 698, 587, 547, 664, 608, 300, 9080, 667, + 9080, 656, 1107, 1117, 1128, 9080, 9080, 9080, 9080, 0, + + 218, 243, 295, 318, 250, 305, 379, 305, 305, 0, + 344, 330, 715, 373, 314, 357, 756, 376, 385, 416, + 432, 462, 457, 801, 460, 465, 464, 495, 470, 483, + 481, 512, 531, 522, 539, 0, 558, 577, 838, 589, + 597, 586, 607, 603, 707, 609, 630, 633, 629, 697, + 652, 665, 705, 0, 714, 702, 758, 747, 765, 767, + 754, 757, 810, 771, 800, 805, 850, 817, 813, 854, + 842, 862, 863, 853, 866, 859, 857, 901, 903, 902, + 898, 896, 906, 914, 900, 920, 9080, 0, 9080, 0, + 307, 0, 643, 0, 601, 1138, 1148, 1159, 0, 0, + + 0, 0, 945, 1004, 1029, 1145, 1196, 1148, 961, 1242, + 1195, 1208, 1248, 1253, 1284, 1324, 1282, 1324, 1353, 1405, + 1402, 1333, 1398, 1413, 1462, 1458, 1511, 1459, 1505, 1470, + 1516, 1555, 1554, 1560, 1574, 1562, 1603, 1609, 1617, 1656, + 1657, 1706, 1655, 1702, 1707, 1755, 1803, 1855, 1717, 1753, + 1759, 1801, 1895, 1847, 1898, 1851, 1909, 1939, 1942, 1959, + 1987, 1999, 2001, 2013, 2001, 2065, 2049, 2062, 2106, 2155, + 2114, 2055, 2163, 2168, 2202, 2119, 2209, 2220, 2238, 2252, + 1210, 2303, 2278, 2264, 2305, 2316, 2328, 2354, 2366, 0, + 9080, 591, 1185, 0, 921, 0, 926, 943, 0, 956, + + 0, 946, 954, 944, 960, 992, 998, 1464, 996, 997, + 1008, 1019, 1027, 1052, 1036, 1040, 1054, 1043, 1051, 1055, + 1157, 1770, 1158, 1158, 1148, 1169, 1187, 1200, 1197, 0, + 1215, 1246, 1256, 1249, 1262, 1261, 1263, 1300, 1316, 1307, + 1348, 1315, 1338, 1357, 1350, 1374, 1374, 1371, 1383, 1393, + 1397, 1410, 1417, 1431, 1510, 1439, 1448, 0, 1460, 1486, + 1512, 1519, 1642, 1525, 1538, 1550, 1557, 1561, 0, 1617, + 1607, 1602, 1605, 1620, 1627, 1619, 1677, 1661, 1712, 1663, + 1657, 1679, 1675, 1714, 1720, 1703, 1758, 1757, 1755, 1771, + 1767, 1779, 0, 1777, 1796, 1807, 1812, 1806, 1807, 1821, + + 1821, 1829, 1848, 1863, 0, 1859, 1899, 1863, 1915, 1866, + 1910, 1906, 1904, 1964, 1948, 1952, 1989, 1974, 1999, 0, + 583, 2431, 2357, 2424, 2425, 2426, 2364, 2424, 2468, 2440, + 2479, 2480, 2515, 2493, 2522, 2525, 2574, 2573, 2565, 2587, + 2615, 2623, 2641, 2660, 2668, 2680, 2684, 2712, 2685, 2737, + 2724, 2752, 2765, 2778, 2790, 2818, 2803, 2831, 2832, 2857, + 2844, 2872, 2876, 2899, 2907, 2918, 2924, 2946, 2951, 2968, + 2986, 2993, 3011, 3034, 3035, 3036, 3074, 3082, 3087, 3123, + 3126, 3128, 3131, 3167, 3172, 3172, 3176, 3214, 3216, 3231, + 3265, 3317, 3257, 3279, 3314, 3305, 3339, 3358, 3367, 3365, + + 3403, 3406, 3426, 3428, 3441, 3493, 3460, 3543, 3476, 3519, + 3530, 3473, 3563, 3578, 3587, 3613, 3612, 3613, 3635, 3657, + 3665, 3670, 3695, 3709, 3710, 3709, 3744, 3753, 3757, 3793, + 3799, 3802, 3822, 3846, 3848, 3851, 3871, 3876, 3900, 3925, + 3892, 3925, 3944, 3968, 3974, 3987, 4015, 4023, 544, 2003, + 2049, 2044, 2047, 2057, 2064, 2077, 2096, 2117, 0, 2125, + 0, 0, 2126, 2119, 2124, 2117, 0, 2116, 2119, 2138, + 2161, 0, 2170, 2174, 2168, 2172, 2184, 2211, 2213, 2229, + 2228, 2253, 0, 0, 2267, 2259, 2270, 2278, 2291, 2321, + 2326, 2352, 0, 2345, 2358, 2368, 2384, 0, 0, 2386, + + 2401, 0, 2431, 0, 2427, 2442, 2465, 2466, 2481, 2482, + 2577, 0, 2489, 0, 0, 0, 2486, 0, 2511, 2537, + 0, 2543, 2614, 2546, 2540, 2551, 0, 2611, 2626, 2618, + 2619, 0, 2630, 2635, 0, 2644, 2653, 2687, 2686, 2715, + 0, 2723, 2732, 2730, 2734, 2757, 0, 2751, 2788, 2808, + 2816, 0, 0, 2812, 2839, 2843, 2860, 2863, 0, 0, + 2882, 2888, 0, 2913, 2914, 2927, 2946, 2978, 2967, 2982, + 3004, 3007, 0, 3008, 0, 3028, 0, 3018, 530, 4034, + 4053, 4078, 4081, 4100, 4083, 4122, 4127, 4135, 4144, 4174, + 4176, 4179, 4204, 4228, 4229, 4230, 4242, 4268, 4273, 4254, + + 4293, 4296, 4322, 4330, 4338, 4368, 4381, 4384, 4392, 4433, + 4419, 4434, 4464, 4475, 4478, 4506, 4519, 4520, 4555, 4571, + 4579, 4572, 4604, 4606, 4618, 4630, 4656, 4654, 4668, 4686, + 4700, 4698, 4705, 4735, 4741, 4752, 4753, 4787, 4795, 4798, + 4843, 4839, 4840, 4881, 4884, 4885, 4925, 4928, 4929, 4968, + 4973, 4976, 4975, 4978, 5018, 5018, 5026, 5062, 5070, 5071, + 5100, 5112, 5115, 5124, 5153, 5154, 5172, 5198, 5206, 5207, + 5220, 5242, 5256, 5261, 5280, 5305, 5306, 5320, 5347, 5351, + 5359, 5364, 5394, 5393, 5399, 5413, 5418, 5443, 5448, 5457, + 5457, 5492, 5493, 5511, 5534, 5535, 5575, 5576, 5589, 5625, + + 5633, 5638, 5636, 5672, 5674, 5677, 5686, 5693, 529, 0, + 0, 3037, 0, 3061, 0, 3072, 3064, 3094, 3099, 3112, + 3103, 3100, 3137, 3166, 0, 3160, 3176, 3174, 3201, 3193, + 3205, 3221, 0, 3235, 3229, 3236, 3246, 3245, 3270, 3259, + 3265, 3281, 3307, 3321, 0, 0, 3311, 3331, 3338, 3358, + 3355, 3371, 0, 0, 3360, 0, 0, 3366, 3391, 3501, + 3390, 0, 0, 3408, 0, 0, 3423, 3415, 3435, 3418, + 3432, 3449, 0, 0, 3471, 3462, 3501, 3489, 3508, 0, + 0, 3531, 3543, 3565, 0, 3576, 3589, 3604, 3596, 0, + 3632, 3638, 3645, 3637, 3639, 3641, 3675, 3677, 3667, 0, + + 3706, 3712, 3725, 0, 3720, 3769, 3773, 0, 0, 528, + 5711, 5729, 5735, 5753, 5764, 5778, 5786, 5804, 5816, 5828, + 5852, 5857, 5871, 5884, 5896, 5910, 5915, 5928, 5940, 5958, + 5965, 5966, 5988, 5990, 6012, 6014, 6019, 6042, 6044, 6066, + 6068, 6092, 6097, 6117, 6120, 6122, 6146, 6158, 6161, 6187, + 6165, 6203, 6214, 6206, 6244, 6247, 6250, 6258, 6288, 6301, + 6299, 6330, 6343, 6344, 6374, 6385, 6388, 6413, 6418, 6432, + 6456, 6474, 6465, 6505, 6509, 6517, 6532, 6557, 6558, 6586, + 6587, 6611, 6612, 6625, 6637, 6640, 6665, 6690, 6699, 6691, + 6704, 6739, 6748, 6757, 6764, 6783, 6792, 6813, 6834, 6837, + + 6853, 6881, 6893, 6896, 6905, 6930, 6939, 6958, 6977, 6981, + 522, 3770, 0, 3765, 0, 3774, 3788, 3802, 3806, 0, + 3818, 0, 3822, 3855, 3870, 3902, 3901, 0, 3904, 3925, + 0, 3932, 0, 3931, 0, 0, 3964, 0, 3956, 3955, + 3972, 3975, 0, 0, 0, 0, 0, 0, 3985, 3999, + 4016, 0, 0, 4003, 0, 4012, 0, 4035, 0, 4023, + 4046, 4048, 4076, 4064, 4087, 0, 4108, 4118, 4116, 4124, + 0, 4141, 0, 4151, 0, 4164, 4192, 4192, 4177, 4194, + 0, 0, 0, 0, 4182, 4191, 519, 6983, 7021, 7019, + 7025, 7028, 7036, 7072, 7070, 7071, 7079, 7114, 7115, 7128, + + 7161, 7158, 7164, 7182, 7205, 7218, 7224, 7259, 7260, 7268, + 7301, 7304, 7312, 7321, 7310, 7346, 7363, 7355, 7388, 7397, + 7406, 7430, 7439, 7448, 7474, 7459, 7499, 7497, 7521, 7504, + 7528, 7542, 7546, 7570, 7588, 7594, 7590, 7638, 7639, 7641, + 7643, 7673, 7692, 7696, 7715, 7734, 7738, 7757, 7776, 7780, + 7799, 7823, 7829, 7853, 7867, 7881, 7820, 7897, 7905, 7911, + 7935, 7946, 515, 0, 0, 0, 0, 4218, 0, 0, + 349, 4244, 4288, 0, 0, 4290, 4294, 4283, 4324, 0, + 0, 0, 4319, 0, 0, 4334, 4327, 0, 0, 4329, + 4346, 4341, 4358, 0, 0, 4372, 4370, 4380, 0, 0, + + 4393, 0, 4411, 4426, 4421, 4437, 4445, 0, 0, 507, + 7949, 7965, 7979, 7993, 8004, 8018, 8026, 8067, 8048, 8066, + 8080, 8092, 8105, 8106, 8120, 8144, 8118, 8156, 8159, 8163, + 8191, 8204, 8210, 8207, 8240, 8248, 8251, 8268, 8273, 8289, + 8300, 8319, 8333, 8330, 8371, 8374, 8375, 8415, 8418, 8426, + 8434, 8464, 8477, 8482, 8491, 8516, 492, 4436, 4694, 0, + 4439, 4446, 0, 0, 0, 4489, 4480, 0, 0, 4483, + 4499, 4529, 4532, 0, 0, 0, 4521, 4535, 4546, 0, + 4585, 476, 8517, 4746, 8531, 8545, 8546, 8570, 8571, 8584, + 8610, 8609, 8596, 8622, 8648, 8653, 8664, 8670, 8682, 8704, + + 8712, 8726, 8734, 8748, 8756, 8770, 471, 436, 4590, 4632, + 0, 0, 0, 4622, 0, 0, 4630, 0, 0, 4636, + 0, 470, 8802, 4652, 8784, 8810, 8824, 8832, 8831, 8839, + 8867, 8875, 8881, 8905, 8925, 8928, 442, 4843, 4698, 0, + 0, 0, 4731, 438, 4889, 4740, 8930, 8933, 8969, 8967, + 423, 4765, 9080, 0, 422, 4768, 0, 8976, 421, 4752, + 418, 4755, 388, 4750, 384, 4778, 366, 4799, 360, 4806, + 343, 4804, 338, 4806, 334, 4814, 332, 4822, 303, 9080, + 293, 0, 294, 286, 241, 216, 9080, 0, 9080, 9049, + 9054, 199, 9059, 9064, 9069, 9074 + } ; -static const flex_int16_t yy_def[1375] = +static const flex_int16_t yy_def[1397] = { 0, - 1367, 1, 1368, 1368, 1367, 5, 1367, 1367, 1367, 1367, - 1367, 1369, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1367, - 1372, 1373, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1374, 1374, 62, 62, 62, 63, 65, 62, 65, 62, - 62, 62, 62, 63, 63, 63, 62, 62, 62, 62, - 65, 62, 62, 62, 1372, 1367, 1367, 1369, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1372, 1373, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 62, - - 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, - 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, - 65, 65, 65, 62, 65, 65, 62, 65, 62, 65, - 62, 62, 65, 65, 65, 65, 62, 62, 65, 65, - 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, - 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 65, 62, 62, 62, 63, 62, 62, 62, - 65, 62, 62, 62, 62, 1372, 1367, 1367, 1367, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1372, 1372, 1372, 62, 62, 62, - 62, 65, 65, 65, 65, 62, 62, 62, 62, 65, - 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, - 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 62, 62, 65, 62, 62, 65, 65, 65, 65, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, - - 62, 65, 65, 65, 65, 65, 62, 62, 62, 62, - 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, - 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, - 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, - 65, 65, 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1372, 65, 65, 62, 62, 62, 65, 62, 65, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, - - 65, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 65, 65, 65, 62, 62, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 62, 62, 62, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, - 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 62, 62, 62, 62, 62, 62, 62, 65, 1367, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1372, 65, 65, - - 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, - 65, 62, 62, 62, 65, 62, 62, 62, 65, 62, - 62, 62, 62, 65, 62, 62, 62, 62, 62, 65, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 62, 65, 65, 65, - 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, - 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1372, 62, 62, 65, 65, 65, 62, 62, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, - - 62, 65, 65, 65, 65, 65, 65, 65, 65, 62, - 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, - 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1372, 65, 65, 65, 65, 62, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 65, 65, 65, 62, - 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 1367, 1370, - 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1372, 62, 1372, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1367, 1370, 1367, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1372, 62, 1372, 62, 62, 62, 65, 65, 65, 65, - 65, 65, 62, 62, 1367, 1367, 1367, 1370, 1370, 1370, - 1370, 1372, 1372, 1372, 62, 62, 62, 65, 1367, 1367, - 1367, 1370, 1372, 1372, 1372, 65, 1367, 1367, 1372, 1372, - 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, - 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, - 1367, 1372, 1367, 1372, 1367, 1372, 0, 1367, 1367, 1367, - 1367, 1367, 1367, 1367 + 1389, 1, 1390, 1390, 1389, 5, 1389, 1389, 1389, 1389, + 1389, 1391, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1389, 1393, 1389, 1394, 1394, + 1389, 1394, 1395, 1394, 1394, 1394, 1394, 1394, 1394, 1394, + 1394, 1396, 1396, 63, 63, 63, 64, 66, 63, 66, + 63, 63, 63, 63, 64, 64, 64, 64, 63, 63, + 63, 66, 63, 63, 63, 63, 1394, 1389, 1389, 1391, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1389, 1393, 1389, 1394, + 1394, 1394, 1395, 1394, 1394, 1394, 1394, 1394, 1394, 1394, + + 1394, 1394, 63, 63, 63, 66, 66, 66, 66, 66, + 66, 63, 63, 66, 66, 66, 63, 63, 63, 66, + 66, 66, 63, 66, 66, 66, 63, 66, 66, 63, + 66, 63, 66, 63, 63, 66, 66, 66, 66, 63, + 63, 66, 66, 63, 63, 63, 63, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, + 63, 63, 63, 63, 66, 66, 66, 66, 66, 66, + 63, 63, 63, 63, 63, 63, 66, 63, 63, 63, + 64, 63, 63, 63, 66, 63, 63, 63, 63, 1394, + 1389, 1389, 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, + 1394, 1394, 63, 63, 63, 63, 66, 66, 66, 66, + 63, 63, 63, 63, 66, 66, 63, 63, 63, 63, + 63, 63, 63, 66, 66, 63, 66, 66, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 66, 66, 66, 66, 63, 63, 66, 63, + 63, 66, 66, 66, 66, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 66, 66, 66, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, + + 66, 66, 63, 63, 63, 63, 66, 66, 66, 66, + 66, 66, 63, 63, 63, 63, 66, 66, 63, 63, + 63, 63, 63, 63, 63, 66, 66, 66, 66, 66, + 66, 66, 63, 63, 66, 66, 63, 63, 63, 63, + 66, 66, 66, 66, 66, 66, 66, 66, 1389, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, 66, + 66, 63, 63, 63, 66, 63, 66, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 66, 63, + + 63, 63, 66, 66, 66, 66, 66, 66, 66, 66, + 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 66, 66, 66, 63, 63, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, + 63, 63, 66, 66, 66, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 66, 66, + 63, 63, 63, 66, 63, 63, 63, 63, 63, 63, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + + 63, 63, 63, 63, 63, 63, 63, 66, 1389, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, + 66, 66, 66, 66, 63, 63, 63, 63, 63, 63, + 63, 66, 66, 63, 63, 63, 66, 63, 63, 63, + 66, 63, 63, 63, 63, 63, 66, 63, 63, 63, + 63, 63, 66, 63, 63, 63, 63, 63, 63, 63, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, + 66, 66, 66, 66, 66, 66, 66, 63, 66, 66, + 66, 66, 66, 66, 66, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 66, 66, 66, 66, 66, 66, + + 66, 63, 63, 63, 63, 66, 66, 66, 66, 66, + 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1394, 63, 63, 66, + 66, 66, 63, 63, 66, 66, 66, 66, 66, 66, + + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 63, 63, 66, 66, 63, 66, 66, 66, + 66, 66, 66, 66, 66, 63, 63, 63, 63, 66, + 66, 66, 66, 66, 66, 66, 63, 63, 63, 63, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, + 66, 66, 66, 66, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, + 66, 66, 66, 66, 66, 66, 66, 63, 63, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 63, 63, 63, 63, 1389, 1392, 1389, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1394, 63, 1394, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 66, 66, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 1389, 1392, 1389, 1392, + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1394, 63, 1394, 63, 63, 63, 63, 66, 66, + 66, 66, 66, 66, 63, 63, 1389, 1389, 1389, 1392, + 1392, 1392, 1392, 1394, 1394, 1394, 63, 63, 63, 66, + 1389, 1389, 1389, 1392, 1394, 1394, 1394, 66, 1389, 1389, + 1394, 1394, 1389, 1389, 1394, 1394, 1389, 1389, 1394, 1394, + 1389, 1389, 1394, 1394, 1389, 1389, 1394, 1394, 1389, 1389, + 1394, 1394, 1389, 1394, 1389, 1394, 1389, 1394, 0, 1389, + 1389, 1389, 1389, 1389, 1389, 1389 + } ; -static const flex_int16_t yy_nxt[9032] = +static const flex_int16_t yy_nxt[9157] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, + 39, 40, 41, 42, 43, 44, 45, 44, 8, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, - - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, - 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, - 95, 99, 105, 100, 129, 131, 106, 109, 139, 101, - 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, - - 177, 111, 108, 178, 112, 98, 183, 113, 99, 105, - 100, 129, 131, 106, 109, 139, 101, 130, 102, 107, - 132, 110, 103, 104, 140, 176, 133, 177, 111, 108, - 178, 112, 114, 183, 113, 119, 115, 120, 188, 86, - 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, - 191, 143, 86, 86, 146, 181, 182, 196, 197, 114, - 1366, 192, 119, 115, 120, 1365, 147, 116, 141, 121, - 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, - 148, 146, 181, 182, 291, 124, 149, 150, 125, 296, - 157, 126, 134, 147, 127, 1364, 158, 128, 135, 136, - - 137, 179, 86, 86, 123, 138, 156, 148, 1363, 180, - 1362, 291, 124, 149, 150, 125, 296, 157, 126, 134, - 1361, 127, 151, 158, 128, 135, 136, 137, 179, 297, - 152, 159, 138, 292, 153, 160, 180, 154, 155, 161, - 200, 293, 278, 301, 279, 162, 1359, 280, 1357, 151, - 294, 1355, 200, 295, 1353, 302, 297, 152, 159, 1351, - 292, 153, 160, 1349, 154, 155, 161, 200, 293, 278, - 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, - 295, 166, 302, 167, 312, 168, 169, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 188, 86, 1347, - - 163, 1345, 164, 305, 1343, 165, 298, 299, 166, 303, - 167, 312, 168, 169, 170, 310, 304, 231, 171, 200, - 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, - 322, 175, 1341, 298, 299, 1339, 303, 1241, 1241, 1316, - 1316, 170, 310, 304, 231, 171, 200, 300, 172, 173, - 232, 200, 311, 320, 321, 174, 200, 322, 175, 194, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, - 233, 313, 1337, 1333, 200, 1329, 314, 327, 234, 187, - 187, 187, 200, 333, 235, 201, 200, 202, 334, 323, - - 325, 326, 241, 203, 200, 204, 324, 233, 313, 205, - 206, 200, 200, 314, 327, 234, 335, 338, 1322, 200, - 333, 235, 201, 200, 202, 334, 1315, 325, 326, 241, - 203, 200, 204, 1301, 339, 1287, 205, 206, 1263, 200, - 1239, 1193, 1147, 335, 338, 187, 187, 187, 1072, 187, - 187, 187, 187, 187, 187, 997, 898, 340, 242, 243, - 246, 339, 200, 244, 247, 187, 187, 187, 200, 245, - 248, 341, 207, 200, 344, 336, 208, 200, 200, 200, - 200, 337, 209, 200, 340, 242, 243, 246, 345, 200, - 244, 247, 210, 200, 799, 200, 245, 248, 341, 207, - - 200, 344, 336, 208, 200, 200, 200, 200, 337, 209, - 200, 671, 543, 200, 346, 345, 283, 284, 347, 210, - 200, 187, 211, 200, 261, 416, 200, 352, 262, 212, - 200, 342, 263, 200, 343, 415, 213, 353, 264, 214, - 200, 346, 215, 283, 284, 347, 200, 288, 200, 211, - 200, 261, 348, 200, 352, 262, 212, 200, 342, 263, - 200, 343, 349, 213, 353, 264, 214, 350, 351, 215, - 287, 286, 281, 200, 216, 200, 200, 285, 217, 348, - 282, 200, 218, 354, 355, 361, 200, 200, 219, 349, - 356, 220, 357, 362, 350, 351, 200, 200, 200, 281, - - 199, 216, 198, 200, 285, 217, 187, 282, 200, 218, - 354, 355, 361, 200, 200, 219, 189, 356, 220, 357, - 362, 363, 364, 200, 200, 200, 200, 306, 307, 308, - 200, 309, 315, 221, 316, 222, 200, 317, 367, 358, - 223, 359, 368, 318, 369, 224, 200, 186, 363, 364, - 319, 184, 360, 200, 306, 307, 308, 200, 309, 315, - 221, 316, 222, 200, 317, 367, 358, 223, 359, 368, - 318, 369, 224, 200, 225, 365, 370, 319, 366, 360, - 371, 200, 226, 372, 373, 227, 374, 328, 228, 329, - 377, 229, 375, 330, 230, 97, 376, 382, 96, 385, - - 331, 225, 365, 370, 332, 366, 87, 371, 200, 226, - 372, 373, 227, 374, 328, 228, 329, 377, 229, 375, - 330, 230, 236, 376, 382, 383, 385, 331, 237, 238, - 239, 332, 378, 389, 386, 240, 384, 379, 391, 392, - 200, 1367, 393, 387, 394, 380, 395, 390, 47, 236, - 381, 388, 383, 398, 399, 237, 238, 239, 47, 378, - 389, 386, 240, 384, 379, 391, 392, 200, 249, 393, - 387, 394, 380, 395, 390, 200, 396, 381, 388, 400, - 398, 399, 250, 406, 403, 200, 1367, 397, 251, 252, - 1367, 404, 407, 401, 405, 249, 1367, 1367, 412, 408, - - 413, 414, 200, 396, 1367, 409, 400, 1367, 544, 250, - 406, 403, 200, 402, 397, 251, 252, 200, 404, 407, - 401, 405, 253, 410, 200, 412, 408, 413, 414, 545, - 254, 200, 409, 546, 255, 544, 411, 256, 257, 1367, - 402, 1367, 1367, 1367, 200, 1367, 1367, 1367, 1367, 253, - 410, 200, 1367, 1367, 1367, 547, 545, 254, 200, 1367, - 546, 255, 429, 411, 256, 257, 258, 200, 200, 200, - 418, 200, 200, 200, 200, 200, 548, 259, 200, 200, - 200, 200, 547, 260, 549, 550, 200, 1367, 200, 429, - 551, 200, 1367, 258, 200, 200, 200, 418, 200, 200, - - 200, 200, 200, 548, 259, 200, 200, 200, 200, 1367, - 260, 549, 550, 200, 265, 200, 266, 551, 200, 267, - 200, 552, 268, 420, 269, 200, 270, 271, 1367, 1367, - 200, 421, 1367, 1367, 553, 200, 200, 1367, 1367, 1367, - 1367, 265, 1367, 266, 1367, 1367, 267, 200, 552, 268, - 420, 269, 200, 270, 271, 200, 200, 200, 421, 200, - 200, 553, 200, 200, 272, 200, 430, 200, 273, 200, - 419, 274, 275, 424, 200, 200, 200, 557, 276, 200, - 558, 277, 200, 200, 559, 560, 200, 200, 200, 1367, - 1367, 272, 200, 430, 200, 273, 200, 419, 274, 275, - - 424, 200, 200, 200, 557, 276, 200, 558, 277, 1367, - 1367, 559, 560, 1367, 1367, 200, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 92, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 417, 417, 417, - 417, 417, 417, 417, 417, 417, 417, 194, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 422, 425, - 554, 423, 555, 561, 562, 563, 564, 1367, 200, 200, - 200, 200, 565, 566, 200, 200, 200, 556, 200, 567, - - 200, 200, 1367, 1367, 200, 422, 425, 554, 423, 555, - 561, 562, 563, 564, 200, 200, 200, 200, 200, 565, - 566, 200, 200, 200, 556, 200, 567, 200, 200, 426, - 427, 200, 431, 568, 200, 200, 1367, 200, 569, 432, - 433, 200, 200, 428, 200, 572, 573, 200, 574, 575, - 1367, 200, 576, 200, 1367, 577, 426, 427, 200, 431, - 568, 200, 200, 200, 200, 569, 432, 433, 1367, 200, - 428, 200, 572, 573, 200, 574, 575, 438, 200, 576, - 200, 200, 577, 578, 1367, 200, 570, 439, 1367, 1367, - 200, 434, 435, 436, 1367, 437, 200, 200, 200, 1367, - - 200, 571, 579, 200, 438, 200, 200, 200, 200, 440, - 578, 200, 452, 570, 439, 200, 200, 200, 434, 435, - 436, 200, 437, 200, 200, 200, 441, 200, 571, 579, - 200, 442, 200, 200, 200, 580, 440, 1367, 200, 452, - 1367, 581, 200, 200, 200, 1367, 1367, 1367, 200, 582, - 1367, 1367, 1367, 441, 583, 1367, 584, 585, 442, 443, - 1367, 444, 580, 1367, 445, 586, 587, 200, 581, 200, - 446, 1367, 200, 448, 449, 1367, 582, 447, 200, 200, - 200, 583, 200, 584, 585, 200, 443, 450, 444, 588, - 200, 445, 586, 587, 200, 589, 200, 446, 200, 200, - - 448, 449, 200, 590, 447, 200, 200, 200, 451, 200, - 591, 592, 200, 593, 450, 455, 588, 200, 200, 1367, - 1367, 594, 589, 200, 200, 200, 200, 200, 1367, 200, - 590, 200, 461, 463, 200, 451, 200, 591, 592, 200, - 593, 595, 455, 200, 200, 200, 453, 454, 594, 1367, - 200, 200, 596, 200, 200, 200, 1367, 200, 200, 461, - 463, 200, 200, 200, 597, 598, 200, 200, 595, 599, - 200, 200, 600, 453, 454, 601, 462, 602, 200, 596, - 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, 200, - 1367, 597, 598, 1367, 200, 456, 599, 457, 1367, 600, - - 1367, 458, 601, 462, 602, 200, 603, 200, 459, 200, - 200, 606, 460, 200, 464, 200, 200, 200, 1367, 466, - 465, 200, 456, 607, 457, 467, 200, 200, 458, 200, - 1367, 608, 200, 603, 200, 459, 200, 200, 606, 460, - 200, 464, 609, 200, 200, 200, 466, 465, 200, 200, - 607, 1367, 467, 200, 200, 468, 200, 200, 608, 200, - 610, 200, 611, 604, 200, 200, 614, 469, 200, 609, - 200, 615, 200, 605, 616, 470, 200, 200, 471, 200, - 200, 472, 468, 1367, 200, 1367, 200, 610, 200, 611, - 604, 200, 200, 614, 469, 200, 617, 200, 615, 618, - - 605, 616, 470, 1367, 200, 471, 200, 200, 472, 200, - 200, 200, 200, 200, 619, 612, 200, 200, 200, 473, - 200, 200, 200, 617, 474, 613, 618, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 1367, 620, 200, 200, 200, 200, - 200, 619, 612, 200, 200, 621, 473, 200, 200, 200, - 200, 474, 613, 622, 200, 200, 200, 200, 480, 481, - 200, 475, 620, 200, 623, 200, 624, 200, 200, 625, - 200, 1367, 621, 1367, 200, 200, 1367, 200, 200, 1367, - 622, 200, 200, 200, 200, 480, 481, 200, 475, 1367, - 200, 623, 200, 624, 482, 200, 625, 200, 476, 200, - - 483, 200, 200, 200, 626, 200, 200, 628, 477, 200, - 200, 200, 200, 478, 479, 1367, 489, 200, 200, 200, - 1367, 482, 200, 627, 1367, 476, 200, 483, 1367, 1367, - 200, 626, 1367, 200, 628, 477, 200, 200, 500, 200, - 478, 479, 200, 489, 200, 200, 200, 200, 200, 200, - 627, 200, 200, 484, 490, 485, 503, 200, 200, 200, - 504, 631, 632, 1367, 200, 500, 200, 200, 1367, 200, - 1367, 1367, 633, 1367, 200, 200, 200, 629, 200, 200, - 484, 490, 485, 503, 200, 200, 200, 504, 631, 632, - 630, 200, 1367, 200, 200, 486, 634, 487, 200, 633, - - 491, 635, 636, 200, 629, 200, 200, 200, 488, 200, - 200, 637, 638, 200, 200, 492, 639, 630, 200, 200, - 1367, 640, 486, 634, 487, 200, 641, 491, 635, 636, - 1367, 1367, 200, 200, 200, 488, 200, 200, 637, 638, - 200, 200, 492, 639, 1367, 200, 200, 200, 640, 200, - 495, 1367, 200, 641, 200, 493, 1367, 200, 494, 200, - 496, 1367, 200, 200, 642, 200, 643, 1367, 644, 1367, - 200, 200, 1367, 200, 200, 200, 200, 495, 200, 200, - 1367, 200, 493, 200, 200, 494, 200, 496, 497, 200, - 200, 642, 200, 643, 200, 644, 200, 200, 200, 498, - - 200, 200, 200, 1367, 645, 200, 200, 200, 1367, 200, - 200, 1367, 1367, 646, 200, 497, 647, 648, 1367, 200, - 649, 200, 1367, 200, 1367, 650, 498, 651, 200, 1367, - 200, 645, 200, 200, 200, 200, 200, 200, 499, 200, - 646, 200, 200, 647, 648, 200, 200, 649, 501, 200, - 1367, 505, 650, 652, 651, 200, 200, 200, 653, 200, - 1367, 200, 200, 502, 200, 499, 200, 200, 654, 200, - 657, 200, 200, 1367, 510, 501, 200, 200, 505, 200, - 652, 200, 200, 200, 660, 653, 200, 200, 200, 1367, - 502, 200, 1367, 1367, 200, 654, 1367, 657, 200, 1367, - - 655, 510, 1367, 1367, 200, 511, 200, 200, 200, 656, - 1367, 660, 200, 200, 200, 506, 512, 200, 200, 513, - 507, 661, 662, 200, 1367, 200, 200, 655, 508, 658, - 200, 659, 511, 509, 200, 200, 656, 517, 200, 200, - 663, 200, 506, 512, 200, 200, 513, 507, 661, 662, - 200, 518, 200, 200, 1367, 508, 658, 200, 659, 200, - 509, 200, 200, 519, 517, 200, 514, 663, 200, 200, - 664, 665, 200, 666, 669, 515, 1367, 200, 518, 200, - 1367, 520, 200, 516, 1367, 200, 200, 200, 200, 200, - 519, 1367, 1367, 514, 1367, 200, 200, 664, 665, 667, - - 666, 669, 515, 668, 200, 200, 200, 200, 520, 200, - 516, 200, 200, 670, 200, 522, 200, 200, 523, 200, - 521, 200, 200, 200, 800, 200, 667, 200, 801, 200, - 668, 200, 200, 1367, 200, 1367, 802, 803, 200, 200, - 670, 200, 522, 804, 200, 523, 200, 521, 200, 526, - 200, 800, 200, 200, 200, 801, 200, 1367, 200, 200, - 200, 524, 200, 802, 803, 805, 200, 200, 200, 200, - 804, 200, 525, 200, 806, 200, 526, 200, 1367, 527, - 200, 200, 807, 200, 528, 1367, 200, 200, 524, 200, - 1367, 200, 805, 200, 200, 1367, 200, 808, 200, 525, - - 200, 806, 200, 200, 200, 529, 527, 535, 200, 807, - 200, 528, 200, 200, 809, 810, 534, 200, 200, 200, - 200, 200, 200, 200, 808, 530, 1367, 200, 1367, 1367, - 200, 811, 529, 1367, 535, 1367, 1367, 200, 1367, 200, - 200, 809, 810, 534, 200, 812, 200, 813, 200, 200, - 200, 1367, 530, 531, 200, 536, 200, 200, 811, 814, - 532, 537, 200, 533, 200, 538, 200, 200, 1367, 200, - 815, 816, 812, 1367, 813, 200, 200, 1367, 539, 817, - 531, 818, 536, 200, 200, 200, 814, 532, 537, 200, - 533, 540, 538, 200, 200, 200, 200, 815, 816, 1367, - - 200, 200, 200, 200, 200, 539, 817, 819, 818, 542, - 200, 200, 200, 200, 674, 541, 200, 200, 540, 820, - 200, 200, 200, 200, 821, 822, 200, 200, 200, 823, - 824, 200, 825, 200, 819, 1367, 542, 200, 200, 1367, - 200, 674, 541, 200, 200, 1367, 820, 200, 200, 1367, - 200, 821, 822, 200, 1367, 1367, 823, 824, 1367, 825, - 200, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 417, 417, 417, 417, 417, 417, 417, 417, 417, - 417, 200, 672, 200, 673, 200, 200, 200, 200, 826, - 827, 200, 200, 200, 200, 1367, 828, 829, 1367, 830, - - 1367, 200, 200, 200, 200, 1367, 1367, 1367, 200, 672, - 200, 673, 200, 200, 200, 200, 826, 827, 200, 200, - 200, 200, 675, 828, 829, 200, 830, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 200, 1367, 831, 200, 200, 1367, 676, 675, - 832, 1367, 200, 833, 200, 834, 1367, 1367, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 677, 831, 200, 200, 200, 676, 200, 832, 200, 200, - 833, 835, 834, 679, 200, 200, 200, 1367, 680, 200, - 200, 836, 678, 200, 200, 200, 837, 677, 838, 200, - - 200, 200, 681, 200, 200, 200, 200, 839, 835, 200, - 679, 200, 840, 200, 200, 680, 200, 200, 836, 678, - 200, 200, 200, 837, 200, 838, 200, 200, 1367, 681, - 200, 200, 1367, 685, 839, 1367, 200, 1367, 1367, 840, - 200, 200, 682, 1367, 683, 200, 841, 200, 200, 200, - 842, 200, 843, 1367, 200, 200, 844, 200, 200, 684, - 685, 686, 200, 1367, 200, 200, 687, 200, 200, 682, - 200, 683, 200, 841, 200, 200, 200, 842, 200, 843, - 200, 200, 200, 844, 1367, 200, 684, 1367, 686, 200, - 689, 200, 200, 687, 200, 200, 1367, 200, 200, 1367, - - 845, 200, 690, 846, 200, 200, 200, 200, 847, 688, - 200, 200, 1367, 200, 200, 1367, 200, 689, 691, 850, - 1367, 200, 1367, 200, 1367, 200, 200, 845, 848, 690, - 846, 200, 851, 200, 852, 847, 688, 200, 200, 849, - 200, 200, 200, 200, 200, 691, 850, 693, 692, 200, - 200, 200, 853, 200, 200, 848, 200, 200, 200, 851, - 854, 852, 857, 694, 858, 1367, 849, 200, 200, 200, - 695, 200, 200, 1367, 693, 692, 200, 200, 200, 853, - 1367, 200, 200, 200, 200, 200, 1367, 854, 200, 857, - 694, 858, 696, 859, 200, 200, 1367, 695, 200, 200, - - 855, 856, 697, 698, 200, 860, 200, 200, 200, 200, - 200, 1367, 861, 200, 862, 200, 200, 863, 699, 696, - 859, 1367, 864, 200, 1367, 200, 200, 855, 856, 697, - 698, 1367, 860, 200, 200, 200, 700, 200, 200, 861, - 200, 862, 200, 200, 863, 699, 865, 701, 200, 864, - 200, 200, 1367, 200, 866, 1367, 200, 200, 200, 1367, - 200, 867, 868, 700, 869, 200, 200, 200, 1367, 200, - 1367, 702, 1367, 865, 701, 200, 200, 1367, 200, 703, - 1367, 866, 200, 200, 200, 200, 200, 200, 867, 868, - 1367, 869, 200, 200, 200, 705, 870, 200, 702, 200, - - 200, 200, 200, 200, 200, 200, 703, 200, 704, 200, - 706, 871, 872, 200, 1367, 200, 873, 200, 1367, 200, - 200, 874, 705, 870, 200, 875, 200, 200, 200, 200, - 876, 200, 200, 1367, 200, 704, 200, 706, 871, 872, - 200, 707, 200, 873, 200, 200, 200, 200, 874, 200, - 708, 1367, 875, 1367, 200, 200, 200, 876, 877, 200, - 200, 200, 711, 200, 200, 200, 710, 200, 707, 200, - 200, 200, 200, 200, 200, 1367, 200, 708, 709, 1367, - 200, 200, 200, 200, 200, 877, 200, 200, 200, 711, - 200, 200, 200, 710, 878, 879, 200, 200, 200, 1367, - - 200, 200, 200, 880, 200, 709, 714, 200, 712, 200, - 200, 200, 881, 200, 200, 200, 200, 200, 882, 883, - 713, 878, 879, 884, 715, 200, 200, 200, 200, 200, - 880, 200, 200, 714, 1367, 712, 200, 200, 200, 881, - 200, 200, 200, 200, 885, 882, 883, 713, 200, 886, - 884, 715, 200, 200, 716, 200, 200, 887, 888, 200, - 717, 200, 1367, 889, 200, 200, 200, 890, 718, 200, - 200, 885, 891, 200, 1367, 200, 886, 719, 892, 200, - 200, 716, 893, 200, 887, 888, 1367, 717, 200, 200, - 889, 200, 1367, 200, 890, 718, 200, 200, 1367, 891, - - 200, 720, 721, 200, 719, 892, 200, 200, 200, 893, - 1367, 894, 200, 200, 200, 895, 200, 1367, 896, 200, - 1367, 1367, 897, 1367, 200, 200, 1367, 200, 720, 721, - 200, 1367, 200, 1367, 722, 200, 1367, 200, 894, 200, - 200, 200, 895, 200, 723, 896, 200, 724, 200, 897, - 200, 200, 200, 200, 200, 200, 998, 1367, 200, 200, - 200, 722, 200, 200, 200, 1367, 999, 1367, 200, 1367, - 200, 723, 1000, 725, 724, 200, 1001, 200, 200, 1367, - 200, 1002, 200, 998, 200, 200, 1003, 200, 200, 200, - 200, 1367, 200, 999, 200, 200, 200, 726, 727, 1000, - - 725, 1367, 200, 1001, 200, 200, 200, 1367, 1002, 1367, - 200, 200, 200, 1003, 1004, 200, 728, 1367, 729, 200, - 1005, 200, 200, 200, 726, 727, 200, 1367, 200, 200, - 730, 200, 731, 200, 200, 1006, 200, 200, 200, 200, - 200, 1004, 200, 728, 732, 729, 1007, 1005, 200, 200, - 200, 1367, 200, 200, 733, 200, 200, 730, 1367, 731, - 200, 200, 1006, 200, 200, 200, 200, 200, 1008, 200, - 1009, 732, 734, 1007, 1010, 200, 200, 200, 200, 200, - 735, 733, 200, 200, 200, 200, 1367, 200, 1011, 200, - 200, 200, 1367, 200, 200, 1008, 1367, 1009, 1012, 734, - - 737, 1010, 1367, 200, 200, 200, 200, 735, 200, 200, - 200, 200, 200, 200, 736, 1011, 200, 200, 200, 200, - 200, 200, 200, 738, 742, 1012, 200, 737, 1013, 200, - 1367, 200, 200, 200, 1367, 200, 1014, 200, 1015, 200, - 200, 736, 200, 739, 200, 200, 200, 200, 200, 200, - 738, 742, 1016, 200, 200, 1013, 200, 200, 200, 200, - 743, 200, 200, 1014, 200, 1015, 200, 200, 200, 200, - 739, 200, 745, 1367, 1017, 200, 1367, 200, 200, 1016, - 1018, 200, 1367, 1019, 200, 200, 1367, 743, 200, 200, - 1020, 200, 740, 200, 200, 200, 200, 200, 1367, 745, - - 200, 1017, 741, 200, 200, 200, 200, 1018, 1021, 744, - 1019, 1367, 1022, 200, 1367, 1367, 200, 1020, 200, 740, - 200, 200, 200, 200, 200, 200, 1023, 200, 200, 741, - 200, 200, 1024, 200, 746, 1021, 744, 1025, 200, 1022, - 200, 200, 747, 200, 1026, 200, 200, 1367, 200, 200, - 200, 1027, 200, 1023, 1367, 200, 200, 1028, 200, 1024, - 748, 746, 200, 1367, 1025, 200, 200, 200, 200, 747, - 1029, 1026, 200, 200, 200, 1367, 200, 200, 1027, 1367, - 749, 200, 1030, 200, 1028, 1367, 200, 748, 200, 200, - 200, 1031, 751, 200, 200, 750, 200, 1029, 1367, 200, - - 200, 200, 200, 200, 1367, 1032, 752, 749, 200, 1030, - 200, 1033, 200, 200, 1367, 200, 200, 200, 1031, 751, - 1367, 200, 750, 200, 1034, 200, 200, 200, 200, 200, - 756, 200, 1032, 752, 753, 200, 1367, 200, 1033, 200, - 200, 200, 1367, 200, 1037, 1038, 1367, 761, 200, 200, - 1367, 1034, 200, 200, 200, 200, 1367, 756, 200, 200, - 1039, 753, 200, 200, 759, 200, 1367, 200, 200, 754, - 200, 1037, 1038, 200, 761, 200, 200, 200, 1040, 1367, - 1041, 200, 1035, 200, 1042, 1036, 200, 1039, 755, 1043, - 200, 759, 200, 200, 1367, 1044, 754, 200, 1045, 1046, - - 200, 760, 200, 1367, 200, 1040, 200, 1041, 200, 1035, - 200, 1042, 1036, 200, 1047, 755, 1043, 1048, 200, 762, - 200, 757, 1044, 200, 1049, 1045, 1046, 1367, 760, 200, - 200, 1367, 200, 200, 758, 200, 1050, 200, 1051, 200, - 200, 1047, 200, 1367, 1048, 200, 762, 1367, 757, 1052, - 200, 1049, 1053, 1367, 763, 1367, 200, 200, 200, 200, - 1367, 758, 200, 1050, 200, 1051, 200, 200, 200, 200, - 200, 200, 1054, 765, 200, 1367, 1052, 200, 200, 1053, - 200, 763, 764, 1367, 766, 200, 200, 200, 1367, 200, - 200, 200, 1055, 1367, 200, 200, 200, 200, 200, 1054, - - 765, 200, 768, 1367, 200, 200, 200, 200, 200, 764, - 200, 766, 200, 200, 200, 767, 1056, 200, 200, 1055, - 200, 200, 200, 200, 770, 200, 200, 1057, 200, 768, - 200, 769, 1058, 200, 200, 200, 200, 200, 774, 200, - 200, 200, 767, 1056, 200, 200, 200, 200, 200, 200, - 200, 770, 200, 200, 1057, 200, 200, 200, 769, 1058, - 200, 200, 1059, 200, 1060, 774, 200, 200, 200, 771, - 200, 200, 200, 200, 200, 200, 200, 200, 1061, 200, - 200, 1062, 1063, 200, 1064, 200, 773, 200, 772, 1059, - 200, 1060, 200, 200, 200, 200, 771, 200, 1065, 200, - - 775, 200, 200, 200, 200, 1061, 200, 200, 1062, 1063, - 1367, 1064, 200, 773, 1367, 772, 200, 200, 200, 200, - 1066, 200, 200, 200, 776, 1065, 200, 775, 200, 1067, - 777, 200, 200, 1068, 200, 1069, 200, 200, 778, 1070, - 1071, 200, 200, 200, 1148, 200, 200, 1066, 1367, 1367, - 200, 776, 1367, 1367, 1367, 200, 1067, 777, 1367, 200, - 1068, 200, 1069, 200, 200, 778, 1070, 1071, 200, 200, - 200, 1148, 200, 200, 200, 781, 780, 200, 779, 200, - 200, 200, 200, 1149, 200, 200, 200, 1367, 1150, 1367, - 200, 1151, 1152, 1153, 1367, 200, 1367, 200, 1154, 200, - - 200, 200, 781, 780, 200, 779, 200, 200, 200, 200, - 1149, 200, 200, 200, 200, 1150, 782, 200, 1151, 1152, - 1153, 200, 200, 783, 200, 1154, 200, 200, 200, 1367, - 200, 1155, 784, 1367, 785, 1156, 1157, 200, 1158, 1367, - 1159, 200, 200, 782, 200, 1160, 1161, 1367, 200, 1367, - 783, 200, 1367, 200, 1162, 200, 200, 200, 1155, 784, - 200, 785, 1156, 1157, 200, 1158, 786, 1159, 787, 200, - 200, 200, 1160, 1161, 200, 1367, 200, 200, 789, 790, - 788, 1162, 200, 200, 200, 1367, 200, 200, 1163, 200, - 200, 1367, 200, 786, 1367, 787, 1367, 200, 1367, 1367, - - 1367, 200, 200, 200, 200, 789, 790, 788, 1367, 200, - 1164, 200, 792, 200, 1165, 1163, 200, 200, 200, 200, - 200, 200, 1166, 200, 200, 200, 200, 791, 200, 200, - 200, 200, 1367, 200, 1367, 793, 200, 1164, 1167, 792, - 1367, 1165, 1168, 1367, 1367, 200, 1367, 200, 200, 1166, - 200, 200, 200, 200, 791, 200, 1169, 200, 200, 200, - 200, 200, 793, 200, 1170, 1167, 200, 794, 200, 1168, - 795, 200, 1171, 797, 796, 200, 1367, 200, 1367, 200, - 200, 1172, 1367, 1169, 200, 1367, 200, 1367, 200, 200, - 1173, 1170, 1367, 200, 794, 200, 1367, 795, 200, 1171, - - 797, 796, 200, 200, 200, 200, 200, 200, 1172, 798, - 200, 200, 200, 1174, 200, 200, 200, 1173, 899, 200, - 1367, 200, 1175, 200, 200, 1367, 1367, 900, 200, 1367, - 200, 1176, 200, 200, 1367, 1367, 798, 200, 1367, 200, - 1174, 200, 200, 200, 1367, 899, 200, 200, 200, 1175, - 200, 200, 200, 200, 900, 200, 200, 1177, 1176, 200, - 200, 904, 200, 901, 1178, 200, 200, 1179, 1180, 200, - 200, 200, 902, 1181, 200, 200, 1367, 905, 903, 200, - 200, 200, 1367, 200, 1177, 200, 200, 200, 904, 200, - 901, 1178, 200, 200, 1179, 1180, 200, 200, 200, 902, - - 1181, 1182, 200, 907, 905, 903, 1367, 200, 200, 200, - 1367, 906, 200, 200, 200, 200, 200, 1183, 1367, 200, - 1367, 200, 1367, 200, 200, 200, 1184, 1185, 1182, 1186, - 907, 1187, 1367, 908, 200, 200, 200, 200, 906, 1188, - 200, 200, 200, 200, 1183, 200, 200, 200, 200, 200, - 200, 1189, 200, 1184, 1185, 200, 1186, 200, 1187, 200, - 908, 1190, 200, 200, 200, 200, 1188, 909, 200, 200, - 1367, 200, 200, 1191, 200, 200, 200, 1192, 1189, 200, - 1367, 200, 200, 1240, 200, 200, 200, 1242, 1190, 200, - 200, 200, 200, 910, 909, 200, 200, 200, 200, 1243, - - 1191, 911, 200, 1244, 1192, 200, 200, 200, 200, 1367, - 1240, 200, 200, 1367, 1242, 200, 200, 200, 200, 1367, - 910, 200, 200, 200, 200, 200, 1243, 200, 911, 200, - 1244, 200, 200, 200, 200, 200, 912, 1245, 200, 200, - 913, 200, 200, 200, 200, 200, 914, 1246, 200, 915, - 200, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, - 200, 200, 200, 912, 1245, 200, 200, 913, 200, 200, - 200, 200, 200, 914, 1246, 200, 915, 1367, 200, 200, - 200, 200, 917, 1367, 200, 200, 200, 200, 200, 200, - 916, 924, 200, 1247, 200, 200, 200, 200, 200, 1367, - - 1248, 1367, 200, 200, 918, 200, 200, 200, 200, 917, - 200, 200, 200, 1249, 200, 200, 200, 916, 924, 1367, - 1247, 200, 200, 1250, 200, 1251, 200, 1248, 200, 1252, - 200, 918, 200, 200, 200, 919, 1253, 200, 200, 200, - 1249, 200, 200, 1254, 1367, 1255, 200, 920, 1256, 1367, - 1250, 200, 1251, 200, 1367, 200, 1252, 1367, 921, 1367, - 200, 1257, 919, 1253, 1258, 200, 200, 1259, 200, 200, - 1254, 200, 1255, 200, 920, 1256, 200, 200, 200, 200, - 1367, 200, 1260, 922, 200, 921, 923, 1261, 1257, 200, - 1262, 1258, 1367, 1367, 1259, 200, 200, 200, 200, 1367, - - 1288, 1290, 200, 200, 200, 1291, 200, 200, 200, 1260, - 922, 200, 1367, 923, 1261, 1292, 200, 1262, 925, 200, - 200, 200, 200, 1293, 200, 200, 200, 1288, 1290, 200, - 200, 200, 1291, 1294, 200, 1241, 1241, 200, 1367, 200, - 1295, 1296, 1292, 1367, 200, 925, 200, 200, 200, 200, - 1293, 1297, 200, 200, 1367, 926, 1298, 200, 200, 1299, - 1294, 1300, 1367, 200, 200, 200, 200, 1295, 1296, 1317, - 200, 200, 1318, 1289, 1319, 200, 200, 200, 1297, 200, - 1367, 927, 926, 1298, 200, 1367, 1299, 1367, 1300, 200, - 200, 200, 200, 200, 1367, 928, 1317, 200, 200, 1318, - - 1289, 1319, 200, 200, 200, 200, 200, 200, 927, 1320, - 1367, 200, 200, 1321, 929, 1367, 200, 200, 200, 200, - 200, 200, 928, 1367, 931, 200, 200, 930, 1367, 1324, - 200, 200, 200, 1367, 200, 200, 1320, 200, 1367, 200, - 1321, 929, 200, 1331, 200, 933, 200, 200, 200, 200, - 932, 931, 1367, 200, 930, 200, 1324, 1332, 200, 1316, - 1316, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 1331, 200, 933, 200, 200, 200, 200, 932, 1367, 200, - 1335, 200, 200, 200, 1332, 1338, 1367, 1340, 200, 200, - 200, 200, 200, 200, 934, 200, 1367, 200, 200, 200, - - 200, 1330, 200, 935, 1367, 200, 200, 1335, 200, 936, - 200, 1342, 1338, 200, 1340, 200, 200, 1344, 200, 937, - 200, 934, 1367, 200, 200, 200, 200, 200, 1330, 1346, - 935, 200, 200, 200, 1367, 200, 936, 1348, 1342, 1350, - 200, 200, 200, 200, 1344, 200, 937, 1352, 1367, 200, - 200, 200, 200, 938, 200, 200, 1346, 200, 200, 1367, - 200, 200, 200, 1354, 1348, 200, 1350, 200, 200, 1367, - 200, 1356, 200, 1367, 1352, 200, 200, 200, 200, 200, - 938, 1358, 200, 200, 200, 200, 939, 200, 200, 200, - 1354, 940, 200, 200, 200, 200, 200, 1367, 1356, 1323, - - 1316, 200, 200, 200, 200, 1367, 200, 1360, 1358, 1367, - 200, 942, 200, 939, 200, 200, 200, 200, 940, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 200, 200, - 200, 200, 941, 200, 1360, 200, 1367, 200, 942, 1367, - 200, 1334, 200, 1367, 200, 944, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 941, - 200, 1367, 200, 200, 200, 1367, 943, 200, 1334, 200, - 1367, 200, 944, 200, 1367, 945, 200, 1367, 1367, 1367, - 200, 200, 1265, 1241, 200, 200, 1367, 200, 1367, 1367, - 200, 946, 200, 943, 1367, 1367, 200, 200, 200, 200, - - 200, 200, 945, 200, 1367, 1367, 200, 1367, 200, 1367, - 1367, 200, 200, 1367, 200, 1367, 1367, 1367, 946, 200, - 1303, 1367, 1367, 1367, 200, 947, 200, 949, 200, 200, - 200, 1367, 200, 200, 200, 1367, 948, 200, 200, 200, - 1367, 200, 200, 200, 1367, 1367, 1367, 1303, 200, 1367, - 1367, 1367, 947, 200, 949, 1367, 200, 200, 1367, 200, - 200, 200, 200, 948, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, - 200, 200, 950, 200, 1367, 1367, 200, 200, 1367, 200, - 200, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 200, - - 200, 200, 200, 200, 951, 200, 200, 1367, 200, 950, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, - 1367, 1367, 952, 1367, 200, 1367, 200, 1367, 1367, 200, - 200, 951, 200, 200, 200, 953, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 200, 200, 1367, 1367, 952, - 200, 954, 955, 200, 956, 200, 200, 200, 200, 200, - 200, 200, 953, 1367, 1367, 200, 200, 200, 1367, 200, - 200, 200, 200, 200, 1367, 1367, 1367, 200, 954, 955, - 1367, 956, 200, 200, 200, 200, 200, 200, 1367, 200, - 957, 200, 200, 958, 200, 1367, 200, 200, 200, 200, - - 959, 1367, 200, 200, 200, 975, 200, 1367, 1367, 200, - 200, 200, 200, 200, 200, 200, 200, 957, 200, 1367, - 958, 200, 200, 200, 960, 200, 200, 959, 200, 200, - 200, 200, 975, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 200, 200, 1367, 1367, 200, 1367, 200, - 1367, 960, 1367, 200, 1367, 200, 961, 978, 1367, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, - 200, 200, 200, 1367, 200, 962, 1367, 200, 1367, 1367, - 200, 200, 200, 961, 978, 1367, 200, 200, 1367, 200, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, - - 1367, 1367, 962, 200, 200, 1367, 200, 200, 200, 200, - 964, 963, 1367, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, - 200, 1367, 1367, 200, 200, 200, 1367, 964, 963, 1367, - 200, 965, 200, 200, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 200, 1367, 966, 967, 1367, 1367, 200, - 200, 200, 200, 200, 200, 1367, 1367, 1367, 965, 200, - 200, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 200, - 200, 1367, 966, 967, 1367, 968, 200, 200, 200, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 200, 1367, - - 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, - 1367, 1367, 968, 200, 200, 1367, 200, 200, 1367, 1367, - 1367, 200, 200, 200, 1367, 200, 969, 1367, 1367, 1367, - 1367, 200, 200, 200, 1367, 200, 1367, 1367, 200, 200, - 200, 200, 200, 970, 200, 200, 1367, 1367, 200, 1367, - 200, 971, 1367, 969, 1367, 200, 1367, 1367, 200, 1367, - 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 200, - 970, 200, 200, 973, 200, 200, 200, 200, 971, 972, - 200, 1367, 200, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 200, 200, 974, 200, 200, - - 973, 200, 1367, 200, 200, 1367, 972, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 977, 200, 1367, 976, 200, - 200, 1367, 1367, 200, 974, 200, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 1367, 977, 200, 1367, 976, 200, 979, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 200, 1367, 981, 980, 979, 200, 200, 200, 200, 200, - 200, 200, 200, 1367, 200, 1367, 1367, 982, 1367, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 981, - - 980, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 1367, 200, 982, 1367, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 1367, 200, 200, 200, - 1367, 200, 983, 200, 1367, 1367, 984, 200, 200, 1367, - 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, - 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 983, - 200, 1367, 200, 984, 200, 985, 1367, 200, 200, 1367, - 1367, 200, 1367, 200, 200, 992, 200, 1367, 200, 200, - 986, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1367, 985, 1367, 200, 200, 1367, 200, 200, 987, - - 200, 200, 992, 200, 200, 200, 200, 986, 200, 200, - 200, 1367, 200, 200, 1367, 1367, 200, 1367, 200, 989, - 1367, 1367, 200, 200, 200, 988, 987, 200, 200, 200, - 200, 200, 200, 1367, 200, 990, 200, 200, 1367, 200, - 1367, 1367, 200, 200, 1367, 200, 989, 1367, 1367, 1367, - 200, 1367, 988, 991, 200, 200, 200, 200, 200, 200, - 200, 200, 990, 200, 200, 200, 200, 200, 200, 200, - 200, 993, 200, 200, 1367, 1367, 1367, 1367, 200, 1367, - 991, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 1367, - 200, 1367, 200, 1367, 200, 200, 1367, 200, 993, 200, - - 200, 1367, 200, 200, 995, 200, 200, 200, 200, 1367, - 200, 1367, 200, 200, 200, 200, 200, 1367, 994, 1367, - 200, 1367, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 995, 996, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1367, 200, 1367, 994, 1367, 200, 1367, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 200, 996, - 200, 1367, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 1367, 200, 1367, 1367, 200, 1367, 200, 1367, - 1073, 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, - 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 1367, - - 200, 1367, 1074, 200, 1367, 200, 200, 1073, 200, 1367, - 200, 1075, 200, 1367, 200, 200, 1367, 1367, 1367, 1367, - 200, 200, 200, 1367, 1367, 1367, 1367, 1367, 1367, 1074, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1075, 200, - 200, 200, 200, 1367, 1367, 1367, 200, 200, 200, 200, - 1367, 1076, 1367, 1367, 1078, 200, 200, 200, 200, 200, - 1077, 1367, 1367, 200, 200, 200, 1367, 200, 200, 1367, - 1367, 1367, 1367, 200, 200, 200, 1367, 1367, 1076, 1367, - 1367, 1078, 200, 200, 200, 1367, 200, 1077, 1079, 1367, - 200, 200, 200, 1367, 200, 200, 200, 200, 1080, 200, - - 200, 200, 200, 200, 200, 1081, 1367, 1367, 200, 200, - 200, 200, 1367, 1367, 1367, 1079, 1367, 200, 200, 1367, - 1367, 200, 200, 200, 200, 1080, 200, 200, 1082, 1367, - 200, 200, 1081, 1367, 1367, 200, 200, 200, 200, 1367, - 1083, 200, 200, 1084, 200, 200, 200, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1082, 1367, 1367, 1085, 1367, - 200, 1367, 200, 1367, 200, 200, 1367, 1083, 200, 200, - 1084, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1086, 1367, 1367, 1085, 1087, 200, 1367, 200, - 200, 200, 200, 1367, 200, 1088, 1367, 200, 1367, 200, - - 200, 200, 200, 200, 1367, 1367, 1367, 200, 1089, 1086, - 200, 1367, 200, 1087, 1367, 1367, 200, 200, 200, 200, - 200, 200, 1088, 1367, 200, 1367, 200, 200, 200, 200, - 1367, 1367, 1367, 1367, 200, 1089, 200, 200, 200, 200, - 1367, 1367, 1090, 200, 1367, 200, 200, 200, 200, 1367, - 200, 1367, 200, 200, 1092, 200, 200, 1367, 200, 200, - 1367, 1091, 1367, 200, 200, 200, 200, 1367, 1367, 1090, - 1093, 1367, 200, 200, 200, 200, 1094, 200, 1367, 200, - 200, 1092, 200, 200, 1367, 200, 200, 1367, 1091, 1367, - 200, 200, 200, 200, 1095, 1367, 200, 1093, 200, 200, - - 200, 200, 1367, 1094, 200, 1367, 200, 200, 1367, 200, - 1367, 1096, 1367, 1367, 200, 1367, 200, 200, 1367, 200, - 200, 1095, 1367, 200, 200, 200, 1367, 200, 1367, 1367, - 200, 200, 200, 200, 200, 1097, 1367, 1367, 1096, 1098, - 200, 200, 1367, 200, 200, 200, 1100, 200, 200, 1099, - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - 200, 200, 1097, 1367, 1367, 200, 1098, 200, 200, 1367, - 200, 200, 200, 1100, 200, 200, 1099, 200, 200, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 200, 1102, 200, 200, 200, 200, 200, 200, 1367, 200, - - 1104, 200, 200, 1367, 1101, 200, 200, 200, 1367, 200, - 1367, 200, 200, 200, 1367, 200, 200, 200, 1102, 200, - 200, 200, 1367, 200, 1367, 200, 200, 1104, 1367, 200, - 1103, 1101, 1367, 200, 200, 200, 200, 1367, 200, 200, - 200, 200, 200, 200, 1106, 1105, 200, 1367, 200, 200, - 200, 200, 200, 200, 1367, 1367, 200, 1103, 1367, 1367, - 1367, 200, 200, 1367, 1367, 200, 1367, 200, 200, 1367, - 200, 1106, 1105, 1367, 1367, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 1107, 200, 200, 200, 200, 200, 1367, 200, 1367, 1367, - - 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1107, 200, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 1367, 1109, - 200, 1108, 200, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1110, 1367, 1367, 1111, 1367, 200, 1367, 1367, 200, - 200, 1367, 200, 1367, 1367, 1367, 1109, 200, 1108, 1367, - 200, 200, 200, 200, 1367, 1112, 200, 200, 1110, 1367, - 1367, 1111, 200, 200, 1367, 1367, 200, 200, 200, 200, - 200, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 1112, 1367, 200, 1367, 1367, 1367, 1367, 200, - - 1367, 1113, 1367, 1367, 200, 200, 200, 200, 200, 200, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 1113, 1367, - 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, 1367, - 1367, 1114, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 1116, 200, 1367, 200, - 1115, 200, 200, 1367, 1367, 200, 1367, 200, 1114, 200, - 1367, 1367, 200, 1367, 200, 1367, 1367, 1367, 200, 200, - 200, 1367, 200, 1116, 1367, 1367, 1367, 1115, 200, 1367, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 1117, - - 200, 200, 200, 200, 1367, 1118, 200, 200, 1119, 200, - 1367, 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, - 200, 200, 1367, 1367, 1367, 200, 1117, 200, 1367, 200, - 200, 1367, 1118, 1367, 200, 1119, 200, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1120, 200, 200, 200, 200, - 1367, 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, - 200, 200, 1120, 200, 200, 1121, 200, 1367, 200, 200, - 200, 1367, 200, 200, 1122, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1123, - - 1367, 1367, 1121, 1367, 1367, 200, 200, 200, 1367, 1367, - 1367, 1122, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 1123, 1124, 1367, 1367, - 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1125, - 1126, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 200, 200, 200, 200, 1124, 1367, 1367, 1127, 1367, 200, - 200, 200, 200, 200, 1128, 200, 1125, 1126, 200, 200, - 200, 200, 200, 200, 1367, 200, 200, 200, 200, 1367, - 200, 1367, 1367, 1367, 1127, 200, 200, 200, 200, 1129, - 200, 1128, 200, 200, 200, 200, 200, 200, 200, 200, - - 200, 1367, 200, 200, 200, 200, 1130, 200, 1367, 1131, - 1367, 200, 200, 200, 200, 200, 1129, 200, 1367, 200, - 200, 200, 200, 200, 200, 200, 1132, 200, 1367, 200, - 200, 200, 200, 1130, 200, 1367, 1131, 1367, 200, 200, - 200, 200, 200, 1367, 200, 1367, 200, 1133, 200, 200, - 200, 1367, 200, 1132, 200, 1367, 200, 1134, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 1135, 200, 200, - 1367, 200, 200, 1367, 1133, 200, 1367, 1367, 1367, 200, - 1367, 200, 1367, 1367, 1134, 200, 1367, 200, 200, 200, - 1367, 1367, 200, 1367, 1135, 200, 1367, 1367, 200, 200, - - 200, 1367, 200, 200, 1367, 200, 1136, 200, 200, 1367, - 200, 1137, 200, 1138, 1367, 200, 200, 1367, 1140, 1367, - 1367, 1367, 1367, 200, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 1136, 200, 1367, 200, 200, 1137, 200, - 1138, 1139, 200, 200, 1367, 1140, 1367, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1141, 1367, 200, 1139, 200, - 1143, 1367, 200, 1367, 200, 200, 1367, 1142, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 200, 200, - 200, 200, 1141, 1367, 200, 1367, 200, 1143, 200, 200, - - 1367, 200, 200, 1367, 1142, 200, 200, 200, 1367, 200, - 200, 200, 200, 200, 1367, 200, 200, 200, 1144, 1367, - 1367, 1145, 1367, 200, 1367, 200, 200, 1367, 1367, 1367, - 1367, 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, - 200, 1367, 1367, 200, 200, 1144, 1367, 1146, 1145, 1367, - 200, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 1367, 1367, 1146, 1367, 200, 1367, 200, 1367, - 1367, 1367, 200, 200, 200, 200, 1194, 200, 200, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 1367, - - 200, 200, 1195, 200, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 200, 1194, 200, 200, 200, 200, 200, 1367, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1195, - 200, 1367, 1196, 200, 200, 1367, 1197, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 200, 1367, 200, 200, - 1367, 1367, 1367, 200, 1367, 200, 200, 200, 1367, 1196, - 1198, 1367, 1367, 1197, 200, 200, 1367, 200, 200, 200, - 200, 1367, 200, 200, 1367, 1199, 200, 200, 1367, 200, - 200, 1367, 200, 200, 200, 1367, 1200, 1198, 200, 200, - 1367, 1367, 200, 200, 1367, 200, 1367, 200, 200, 1367, - - 1367, 1367, 1199, 1367, 200, 1367, 200, 200, 1367, 1367, - 200, 200, 200, 1200, 1367, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 200, 200, 1201, 200, 1202, - 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, - 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 200, - 1203, 1367, 1367, 200, 1201, 200, 1202, 200, 200, 200, - 1367, 200, 200, 1204, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 200, 1367, 200, 200, 1367, 1203, 1367, 200, - 1205, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 1367, - 1204, 1367, 200, 200, 1367, 1367, 1367, 200, 200, 200, - - 1367, 200, 200, 200, 1206, 200, 200, 1205, 1367, 1367, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 1367, 200, 1367, 1367, 200, - 200, 1206, 200, 1367, 1367, 1367, 1207, 200, 1367, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 200, - 200, 1208, 1367, 1207, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 200, - 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1208, 200, - 1367, 200, 200, 200, 1367, 1209, 200, 200, 200, 200, - - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, - 1367, 1367, 200, 1367, 200, 200, 200, 1367, 200, 1367, - 1367, 1367, 1209, 200, 200, 1367, 200, 200, 200, 200, - 1367, 200, 200, 1367, 200, 200, 200, 1367, 1210, 200, - 200, 200, 200, 200, 1212, 200, 1367, 200, 200, 1367, - 200, 200, 200, 1211, 200, 1367, 1213, 200, 1367, 1367, - 200, 200, 1367, 200, 1367, 1210, 200, 200, 1367, 1367, - 200, 1212, 200, 1367, 200, 200, 1367, 200, 1367, 200, - 1211, 200, 1367, 1213, 200, 1367, 1367, 200, 200, 200, - 200, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, - - 200, 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 1367, 1367, 200, 200, 200, 200, - 1367, 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 200, 1367, 1367, 200, 200, 1367, 1367, - 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 1367, - 200, 200, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 1367, 1367, 200, 200, 200, 1215, 200, 1367, 200, - 200, 1214, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, - 200, 1216, 1367, 1367, 200, 200, 200, 1367, 1367, 200, - - 200, 1367, 200, 1215, 200, 200, 1367, 200, 1214, 200, - 200, 1367, 1367, 200, 200, 200, 1367, 200, 1216, 1367, - 200, 200, 200, 200, 200, 1367, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 1367, 1217, 200, 1367, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 1367, 1367, - 200, 200, 1218, 1367, 200, 200, 200, 200, 200, 200, - 1367, 1367, 1367, 1217, 200, 1367, 1367, 200, 200, 1367, - 200, 200, 200, 200, 1219, 1367, 1367, 200, 200, 1218, - 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, 1367, - 1367, 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, - - 200, 1219, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 200, 1220, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, - 1221, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1222, - 200, 1367, 200, 200, 1367, 200, 200, 200, 1220, 200, - 1223, 1225, 200, 200, 200, 200, 200, 1221, 1367, 1367, - 200, 200, 200, 200, 200, 1367, 1222, 1367, 200, 1367, - 200, 1367, 200, 200, 200, 1367, 200, 1223, 1225, 1367, - 1367, 200, 200, 200, 1224, 1367, 1367, 200, 200, 1226, - 1367, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - - 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, - 200, 1224, 1367, 1227, 1367, 1367, 1226, 1367, 1367, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, - 1227, 1367, 1367, 1228, 1367, 200, 1367, 200, 200, 200, - 1367, 200, 1229, 1367, 1367, 1367, 200, 200, 1367, 1367, - 1367, 200, 1367, 200, 200, 200, 200, 1367, 1367, 1367, - 1228, 200, 200, 1367, 200, 200, 200, 1367, 200, 1229, - 1230, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 1367, 1367, 200, 200, - - 1367, 1367, 1367, 200, 1367, 200, 1231, 1230, 200, 1367, - 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 1232, 1367, 1367, 200, 200, 1367, 1367, - 1367, 1367, 200, 1231, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 1233, 1367, 1367, 200, 200, 200, 1367, 200, - 1232, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, - 200, 200, 1367, 200, 1367, 200, 1367, 1234, 200, 1233, - 1367, 1367, 1367, 200, 1367, 1367, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 1235, 1367, 200, 200, 200, - 1367, 1367, 200, 1367, 1234, 1367, 1367, 1367, 1367, 1236, - - 1367, 1367, 1367, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1235, 1367, 200, 200, 200, 1367, 200, 200, - 200, 200, 1367, 200, 1367, 200, 1236, 1367, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 1238, 200, 200, 1237, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 1238, 1367, 200, - - 1237, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 1367, 200, 1367, 1367, 200, 1264, 1367, 1367, - 1367, 200, 200, 1367, 200, 1367, 1367, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 200, 200, 1264, 200, 1265, 1241, 200, 1367, - 1367, 200, 200, 1367, 200, 1367, 1266, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 200, 1367, 1367, 200, 200, 1367, 200, 200, - 1367, 200, 1267, 1266, 1367, 200, 200, 200, 200, 200, - - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, - 200, 1367, 200, 200, 200, 200, 200, 1367, 200, 1267, - 200, 1367, 200, 200, 1367, 1268, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 200, 1367, 200, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 1271, 1269, - 1367, 1367, 1268, 200, 200, 1367, 200, 200, 200, 200, - 1367, 200, 200, 200, 200, 200, 1270, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1271, 1269, 1367, 200, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 1367, 1270, 200, 200, 200, 1367, 200, 200, - - 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1273, 200, - 200, 200, 1272, 1367, 1367, 200, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 200, 1367, 200, 200, 200, 1367, - 1367, 200, 1367, 200, 1367, 1273, 200, 200, 1367, 1272, - 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 1367, 200, 200, 200, 1275, 1367, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 1367, 1274, - 200, 200, 1276, 200, 1367, 200, 1367, 200, 200, 200, - - 1367, 200, 200, 200, 1275, 1367, 200, 1367, 200, 200, - 200, 200, 200, 200, 200, 1367, 1274, 200, 200, 1276, - 1277, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1367, 1367, 1367, 1367, 200, - 1367, 1367, 1278, 1367, 200, 200, 1367, 1277, 200, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, 1278, - 1367, 200, 200, 1279, 1367, 1367, 1367, 200, 200, 1367, - 200, 1367, 1367, 1280, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - - 1279, 1367, 200, 1367, 200, 1367, 1367, 200, 1367, 1367, - 1280, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 1281, 200, 200, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, - 1282, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 1281, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 1283, - 200, 200, 1367, 200, 200, 200, 200, 1282, 200, 1367, - 200, 200, 1284, 200, 1285, 1367, 200, 1367, 200, 1367, - 1367, 1367, 1367, 1367, 200, 200, 1283, 200, 1367, 1367, - - 1367, 200, 200, 200, 200, 1367, 1286, 200, 200, 1284, - 200, 1285, 1367, 200, 200, 200, 200, 1367, 200, 200, - 1367, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, - 1367, 200, 200, 1286, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, - 200, 200, 200, 200, 200, 1367, 200, 1302, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, - 200, 200, 200, 1304, 200, 200, 200, 1367, 200, 200, - 200, 200, 200, 1367, 1302, 200, 1367, 1367, 1367, 200, - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - - 1304, 200, 1367, 200, 200, 200, 200, 200, 1305, 200, - 200, 1367, 1367, 1367, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 200, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 1305, 200, 200, 1367, 1306, - 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 1367, 1367, 1367, 200, - 200, 200, 1367, 200, 1367, 1367, 1306, 1367, 1367, 200, - 200, 200, 200, 1367, 1367, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 1309, 200, 1307, 1308, 200, 200, 1367, - 200, 200, 200, 1367, 1310, 200, 200, 200, 200, 200, - - 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, 200, - 1309, 200, 1307, 1308, 200, 200, 200, 200, 200, 200, - 200, 1310, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1367, 1367, 200, 200, 200, - 1367, 200, 1367, 200, 1367, 200, 200, 1367, 1311, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, - 200, 200, 200, 200, 1313, 200, 200, 200, 200, 1312, - 200, 1314, 200, 200, 1367, 1311, 200, 1367, 200, 1367, - 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, 200, - - 200, 1313, 200, 1367, 200, 200, 1312, 200, 1314, 200, - 200, 1323, 1316, 200, 1325, 200, 1367, 200, 200, 200, - 200, 1367, 200, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 1367, 200, 200, 200, 1367, 200, 1367, 1367, 1367, - 200, 1325, 200, 200, 1367, 200, 200, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 200, 1326, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 1327, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 1326, 200, - - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 1327, 1367, 200, 200, 200, 200, 200, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, - 200, 1328, 1367, 200, 200, 200, 200, 200, 200, 200, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 200, 200, 200, 1328, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, - 200, 200, 1367, 200, 200, 200, 200, 1336, 1367, 1367, - 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, 1367, - 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 1367, - - 1367, 200, 200, 1367, 1336, 1367, 1367, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 1367, 1367, 200, 200, 1367, - 1367, 1367, 1367, 200, 46, 46, 46, 46, 46, 88, - 1367, 1367, 88, 88, 185, 185, 185, 1367, 185, 187, - 1367, 187, 187, 187, 190, 1367, 190, 190, 190, 200, - 1367, 200, 200, 200, 7, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367 + 42, 43, 44, 45, 44, 46, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 59, 60, 61, 62, 63, + + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 85, 49, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 85, 87, 88, 88, 88, 88, 91, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 92, 94, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, + 97, 101, 107, 102, 131, 133, 108, 111, 141, 103, + 132, 104, 109, 134, 112, 105, 106, 142, 161, 135, + + 186, 113, 110, 100, 114, 191, 88, 115, 101, 107, + 102, 131, 133, 108, 111, 141, 103, 132, 104, 109, + 134, 112, 105, 106, 142, 161, 135, 186, 113, 110, + 182, 114, 116, 1388, 115, 121, 117, 122, 183, 194, + 118, 143, 123, 294, 146, 144, 119, 124, 147, 120, + 195, 145, 88, 88, 148, 184, 185, 182, 1387, 116, + 199, 200, 121, 117, 122, 183, 149, 118, 143, 123, + 294, 146, 144, 119, 124, 147, 120, 125, 145, 158, + 150, 148, 184, 185, 295, 126, 151, 152, 127, 300, + 159, 128, 136, 149, 129, 1386, 160, 130, 137, 138, + + 139, 88, 88, 1385, 125, 140, 158, 150, 191, 88, + 1384, 295, 126, 151, 152, 127, 300, 159, 128, 136, + 1383, 129, 153, 160, 130, 137, 138, 139, 296, 301, + 154, 162, 140, 305, 155, 163, 297, 156, 157, 164, + 298, 306, 179, 299, 180, 165, 1381, 181, 1379, 153, + 1259, 1259, 309, 316, 1377, 296, 301, 154, 162, 1375, + 305, 155, 163, 297, 156, 157, 164, 298, 306, 179, + 299, 180, 165, 166, 181, 167, 1373, 307, 168, 309, + 316, 169, 1371, 170, 308, 171, 172, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 1369, 317, 314, + + 166, 1367, 167, 318, 307, 168, 302, 303, 169, 315, + 170, 308, 171, 172, 173, 324, 325, 234, 174, 203, + 304, 175, 176, 235, 203, 317, 314, 326, 177, 203, + 318, 178, 1365, 302, 303, 1363, 315, 1338, 1338, 1361, + 1359, 173, 324, 325, 234, 174, 203, 304, 175, 176, + 235, 203, 327, 1355, 326, 177, 203, 1351, 178, 197, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 190, 190, 328, 190, 190, 190, 190, 190, 190, 327, + 236, 331, 1344, 1337, 203, 1322, 329, 330, 237, 190, + 190, 190, 203, 337, 238, 204, 203, 205, 338, 328, + + 339, 1307, 244, 206, 203, 207, 342, 236, 331, 208, + 209, 203, 203, 329, 330, 237, 343, 344, 1282, 203, + 337, 238, 204, 203, 205, 338, 1257, 339, 340, 244, + 206, 203, 207, 342, 341, 1210, 208, 209, 1163, 203, + 1087, 1011, 910, 343, 344, 190, 190, 190, 345, 190, + 190, 190, 190, 190, 190, 340, 809, 348, 245, 246, + 249, 341, 203, 247, 250, 190, 190, 190, 203, 248, + 251, 346, 210, 203, 347, 345, 211, 203, 203, 203, + 203, 349, 212, 203, 348, 245, 246, 249, 350, 203, + 247, 250, 213, 203, 679, 203, 248, 251, 346, 210, + + 203, 347, 549, 211, 203, 203, 203, 203, 349, 212, + 203, 203, 421, 203, 351, 350, 287, 288, 203, 213, + 203, 190, 214, 203, 356, 203, 203, 357, 203, 215, + 203, 264, 358, 203, 359, 360, 216, 361, 203, 217, + 203, 351, 218, 287, 288, 203, 203, 420, 365, 214, + 203, 356, 203, 203, 357, 203, 215, 203, 264, 358, + 203, 359, 360, 216, 361, 366, 217, 292, 367, 218, + 368, 291, 265, 203, 219, 365, 266, 203, 220, 282, + 267, 283, 221, 290, 284, 371, 268, 372, 222, 203, + 289, 223, 366, 202, 203, 367, 203, 368, 203, 265, + + 203, 219, 201, 266, 203, 220, 282, 267, 283, 221, + 203, 284, 371, 268, 372, 222, 203, 289, 223, 190, + 285, 203, 192, 203, 203, 203, 203, 203, 286, 362, + 203, 363, 373, 224, 203, 225, 203, 203, 369, 374, + 226, 370, 364, 375, 203, 227, 203, 285, 310, 311, + 312, 203, 313, 203, 189, 286, 362, 203, 363, 373, + 224, 203, 225, 203, 187, 369, 374, 226, 370, 364, + 375, 203, 227, 203, 228, 310, 311, 312, 319, 313, + 320, 203, 229, 321, 376, 230, 377, 378, 231, 322, + 381, 232, 382, 379, 233, 99, 323, 380, 98, 387, + + 89, 228, 1389, 48, 48, 319, 1389, 320, 203, 229, + 321, 376, 230, 377, 378, 231, 322, 381, 232, 382, + 379, 233, 239, 323, 380, 332, 387, 333, 240, 241, + 242, 334, 383, 388, 390, 243, 1389, 384, 335, 394, + 203, 1389, 336, 396, 389, 385, 1389, 1389, 1389, 239, + 386, 1389, 332, 395, 333, 240, 241, 242, 334, 383, + 388, 390, 243, 352, 384, 335, 394, 203, 252, 336, + 396, 389, 385, 353, 391, 203, 397, 386, 354, 355, + 395, 398, 253, 392, 399, 203, 400, 401, 254, 255, + 352, 393, 403, 404, 405, 252, 1389, 1389, 402, 1389, + + 353, 391, 203, 397, 1389, 354, 355, 1389, 398, 253, + 392, 399, 203, 400, 401, 254, 255, 203, 393, 403, + 404, 405, 256, 406, 203, 402, 408, 411, 412, 413, + 257, 203, 415, 409, 258, 414, 410, 259, 260, 1389, + 417, 418, 419, 407, 203, 416, 1389, 550, 1389, 256, + 406, 203, 551, 408, 411, 412, 413, 257, 203, 415, + 409, 258, 414, 410, 259, 260, 261, 417, 418, 419, + 407, 203, 416, 203, 550, 203, 552, 262, 553, 551, + 203, 203, 554, 263, 555, 430, 203, 1389, 556, 1389, + 557, 203, 1389, 261, 203, 1389, 203, 1389, 203, 1389, + + 203, 203, 203, 552, 262, 553, 203, 203, 203, 554, + 263, 555, 430, 203, 269, 556, 270, 557, 203, 271, + 203, 203, 272, 203, 273, 558, 274, 275, 203, 423, + 203, 559, 1389, 203, 203, 563, 203, 1389, 1389, 564, + 203, 269, 565, 270, 1389, 1389, 271, 203, 1389, 272, + 203, 273, 558, 274, 275, 203, 423, 203, 559, 203, + 566, 203, 563, 203, 276, 203, 564, 203, 277, 565, + 424, 278, 279, 567, 568, 203, 569, 203, 280, 570, + 571, 281, 203, 572, 573, 574, 203, 566, 203, 1389, + 1389, 276, 203, 1389, 1389, 277, 1389, 424, 278, 279, + + 567, 568, 203, 569, 1389, 280, 570, 571, 281, 1389, + 572, 573, 574, 1389, 1389, 203, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 94, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 422, 422, 422, + 422, 422, 422, 422, 422, 422, 422, 197, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 425, 575, + 203, 203, 579, 203, 580, 203, 426, 429, 203, 581, + 203, 1389, 582, 203, 293, 293, 293, 293, 293, 293, + + 293, 293, 293, 293, 1389, 425, 575, 203, 203, 579, + 203, 580, 203, 426, 429, 203, 581, 203, 427, 582, + 203, 428, 1389, 434, 583, 1389, 584, 1389, 203, 203, + 203, 203, 535, 585, 203, 203, 203, 586, 203, 203, + 203, 203, 1389, 1389, 435, 427, 203, 1389, 428, 203, + 434, 583, 536, 584, 203, 203, 203, 203, 203, 535, + 585, 203, 203, 203, 586, 203, 203, 203, 203, 431, + 432, 435, 587, 203, 203, 203, 203, 203, 203, 536, + 588, 203, 203, 433, 203, 1389, 436, 203, 203, 589, + 1389, 1389, 1389, 437, 203, 590, 431, 432, 203, 587, + + 591, 203, 203, 592, 203, 203, 438, 588, 443, 203, + 433, 203, 203, 436, 203, 203, 589, 203, 444, 203, + 437, 203, 590, 1389, 203, 203, 593, 591, 203, 203, + 592, 1389, 1389, 438, 1389, 443, 1389, 1389, 594, 203, + 595, 1389, 1389, 1389, 203, 444, 203, 1389, 1389, 598, + 203, 203, 1389, 593, 203, 203, 203, 439, 440, 441, + 203, 442, 1389, 445, 203, 594, 203, 595, 203, 203, + 203, 599, 1389, 203, 596, 455, 598, 203, 203, 203, + 600, 203, 597, 203, 439, 440, 441, 203, 442, 203, + 445, 203, 601, 203, 446, 203, 203, 203, 599, 447, + + 203, 596, 455, 602, 603, 203, 203, 600, 1389, 597, + 203, 1389, 604, 1389, 1389, 1389, 203, 1389, 1389, 601, + 1389, 446, 605, 1389, 203, 606, 447, 448, 203, 449, + 602, 603, 450, 607, 456, 203, 608, 203, 451, 604, + 203, 453, 454, 609, 203, 452, 203, 203, 203, 605, + 203, 203, 606, 457, 448, 203, 449, 610, 203, 450, + 607, 456, 203, 608, 203, 451, 1389, 203, 453, 454, + 609, 203, 452, 203, 203, 203, 1389, 203, 1389, 1389, + 457, 613, 460, 614, 610, 203, 458, 459, 560, 1389, + 561, 203, 466, 203, 203, 203, 203, 203, 203, 203, + + 203, 615, 203, 203, 203, 562, 468, 203, 613, 460, + 614, 1389, 616, 458, 459, 560, 203, 561, 203, 466, + 203, 203, 203, 203, 203, 203, 203, 203, 615, 203, + 203, 203, 562, 468, 203, 461, 611, 462, 467, 616, + 203, 463, 617, 203, 618, 203, 612, 203, 464, 469, + 203, 203, 465, 621, 1389, 470, 203, 203, 1389, 1389, + 1389, 203, 461, 611, 462, 467, 622, 203, 463, 617, + 1389, 618, 203, 612, 203, 464, 469, 203, 203, 465, + 621, 203, 470, 203, 203, 203, 203, 472, 203, 203, + 203, 471, 623, 622, 203, 203, 473, 203, 624, 203, + + 203, 203, 475, 625, 203, 476, 203, 203, 203, 1389, + 474, 1389, 203, 203, 472, 1389, 203, 203, 471, 623, + 203, 203, 203, 473, 203, 624, 203, 203, 203, 475, + 625, 203, 476, 203, 203, 1389, 203, 474, 477, 626, + 627, 628, 203, 203, 203, 629, 630, 203, 203, 203, + 203, 478, 203, 631, 203, 1389, 1389, 203, 632, 1389, + 1389, 1389, 203, 203, 619, 477, 626, 627, 628, 203, + 203, 203, 629, 630, 620, 203, 203, 203, 478, 203, + 631, 203, 203, 203, 203, 632, 479, 203, 203, 203, + 485, 619, 203, 203, 480, 203, 635, 638, 639, 633, + + 203, 620, 203, 203, 1389, 1389, 1389, 640, 641, 203, + 203, 1389, 1389, 479, 203, 203, 1389, 485, 634, 203, + 203, 480, 203, 635, 638, 639, 633, 203, 203, 203, + 203, 481, 486, 203, 640, 641, 636, 203, 203, 203, + 642, 482, 643, 203, 644, 634, 483, 484, 203, 637, + 203, 203, 203, 487, 1389, 203, 494, 203, 481, 486, + 203, 1389, 203, 636, 203, 203, 203, 642, 482, 643, + 203, 644, 1389, 483, 484, 203, 637, 203, 203, 203, + 487, 203, 488, 494, 203, 203, 203, 645, 495, 203, + 646, 203, 203, 203, 496, 647, 576, 648, 203, 203, + + 577, 203, 1389, 649, 203, 650, 1389, 1389, 203, 488, + 1389, 578, 203, 203, 645, 495, 651, 646, 203, 203, + 203, 496, 647, 576, 648, 203, 203, 577, 203, 203, + 649, 203, 650, 203, 203, 489, 203, 490, 578, 203, + 652, 203, 497, 651, 653, 654, 203, 655, 656, 203, + 1389, 1389, 1389, 1389, 657, 1389, 203, 1389, 658, 1389, + 203, 203, 489, 203, 490, 1389, 203, 652, 203, 497, + 659, 653, 654, 203, 655, 656, 203, 491, 502, 492, + 500, 657, 203, 660, 203, 658, 203, 203, 203, 661, + 493, 203, 203, 1389, 662, 203, 203, 659, 1389, 665, + + 203, 1389, 668, 1389, 491, 502, 492, 500, 1389, 203, + 660, 203, 1389, 203, 203, 203, 661, 493, 203, 203, + 501, 662, 203, 203, 1389, 663, 665, 203, 203, 668, + 203, 203, 669, 203, 664, 203, 498, 1389, 203, 499, + 203, 670, 203, 203, 203, 1389, 671, 501, 1389, 203, + 1389, 666, 663, 667, 203, 203, 1389, 203, 203, 669, + 203, 664, 203, 498, 503, 203, 499, 203, 670, 203, + 203, 203, 203, 671, 203, 203, 203, 203, 666, 203, + 667, 203, 203, 504, 203, 505, 1389, 203, 672, 203, + 1389, 503, 673, 674, 1389, 203, 1389, 1389, 1389, 203, + + 1389, 203, 203, 677, 203, 203, 203, 1389, 1389, 203, + 504, 203, 505, 203, 203, 672, 203, 203, 1389, 673, + 674, 507, 203, 203, 675, 203, 506, 508, 676, 203, + 677, 509, 203, 203, 203, 203, 511, 203, 678, 203, + 203, 203, 810, 203, 203, 203, 203, 203, 507, 510, + 203, 675, 203, 506, 508, 676, 203, 1389, 509, 203, + 203, 203, 203, 511, 203, 678, 203, 1389, 203, 810, + 203, 1389, 203, 203, 203, 1389, 510, 516, 1389, 1389, + 1389, 203, 203, 1389, 203, 525, 203, 512, 811, 203, + 812, 203, 513, 813, 203, 517, 814, 203, 203, 815, + + 514, 203, 203, 816, 516, 515, 518, 203, 203, 203, + 203, 203, 525, 1389, 512, 811, 203, 812, 203, 513, + 813, 203, 517, 814, 203, 203, 815, 514, 203, 203, + 816, 817, 515, 518, 203, 519, 523, 203, 1389, 203, + 203, 203, 529, 818, 203, 203, 203, 819, 820, 203, + 524, 203, 1389, 821, 822, 203, 823, 824, 817, 825, + 203, 1389, 519, 523, 826, 203, 203, 203, 203, 529, + 818, 203, 203, 203, 819, 820, 203, 524, 203, 520, + 821, 822, 203, 823, 824, 526, 825, 203, 521, 203, + 203, 826, 203, 203, 203, 203, 522, 1389, 203, 203, + + 203, 1389, 827, 828, 203, 1389, 520, 527, 829, 203, + 830, 1389, 526, 831, 203, 521, 203, 203, 832, 1389, + 203, 203, 203, 522, 528, 203, 203, 203, 203, 827, + 828, 203, 203, 833, 527, 829, 203, 830, 203, 1389, + 831, 203, 203, 530, 203, 832, 532, 1389, 203, 203, + 203, 528, 834, 835, 531, 203, 203, 1389, 836, 203, + 833, 1389, 1389, 1389, 203, 203, 203, 1389, 203, 203, + 530, 203, 533, 532, 203, 203, 203, 203, 203, 834, + 835, 531, 203, 203, 203, 836, 837, 1389, 203, 534, + 203, 203, 838, 203, 541, 203, 839, 1389, 203, 533, + + 203, 203, 1389, 540, 203, 203, 1389, 840, 203, 203, + 203, 203, 1389, 837, 203, 203, 534, 203, 1389, 838, + 841, 541, 1389, 839, 203, 203, 537, 203, 1389, 203, + 540, 203, 842, 538, 840, 203, 539, 203, 542, 203, + 203, 203, 544, 843, 543, 203, 203, 841, 844, 203, + 203, 203, 203, 537, 546, 545, 203, 1389, 203, 842, + 538, 1389, 203, 539, 203, 542, 203, 203, 1389, 544, + 843, 543, 203, 203, 203, 844, 203, 203, 845, 203, + 203, 546, 545, 203, 203, 203, 846, 203, 548, 203, + 203, 203, 203, 203, 847, 547, 203, 682, 848, 203, + + 203, 203, 203, 203, 203, 845, 849, 203, 850, 203, + 203, 203, 203, 846, 203, 548, 1389, 203, 1389, 203, + 203, 847, 547, 203, 682, 848, 203, 203, 1389, 203, + 203, 203, 1389, 849, 1389, 850, 203, 1389, 851, 203, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 680, 203, 681, 1389, 203, 203, 203, 203, 1389, 203, + 203, 203, 203, 1389, 203, 851, 852, 853, 854, 203, + 203, 203, 203, 203, 1389, 203, 1389, 680, 203, 681, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 683, 203, 1389, 852, 853, 854, 203, 203, 203, 203, + + 203, 203, 203, 203, 855, 203, 203, 203, 203, 203, + 685, 856, 203, 203, 1389, 684, 203, 683, 1389, 203, + 857, 858, 861, 687, 1389, 203, 203, 862, 203, 203, + 203, 855, 203, 203, 1389, 203, 203, 685, 856, 203, + 203, 203, 684, 203, 863, 203, 203, 857, 858, 861, + 687, 203, 203, 203, 862, 688, 203, 203, 689, 686, + 203, 203, 203, 864, 1389, 203, 203, 203, 203, 865, + 203, 863, 203, 1389, 1389, 868, 1389, 1389, 203, 869, + 1389, 870, 688, 1389, 203, 689, 686, 203, 203, 203, + 864, 203, 203, 1389, 203, 203, 865, 203, 690, 203, + + 691, 203, 868, 203, 203, 859, 869, 694, 870, 203, + 203, 203, 693, 203, 1389, 692, 860, 203, 203, 203, + 203, 695, 203, 203, 1389, 690, 203, 691, 203, 1389, + 203, 203, 859, 203, 694, 871, 203, 203, 203, 693, + 203, 203, 692, 860, 203, 203, 203, 203, 695, 203, + 203, 203, 872, 203, 866, 867, 696, 873, 874, 203, + 203, 203, 871, 698, 875, 876, 1389, 203, 203, 697, + 877, 203, 203, 1389, 1389, 878, 203, 203, 203, 872, + 203, 866, 867, 696, 873, 874, 203, 203, 203, 1389, + 698, 875, 876, 203, 203, 203, 697, 877, 203, 1389, + + 699, 203, 878, 203, 203, 203, 701, 700, 203, 879, + 203, 203, 880, 203, 203, 704, 203, 203, 1389, 203, + 203, 203, 203, 1389, 702, 1389, 203, 699, 203, 203, + 203, 203, 203, 701, 700, 203, 879, 203, 203, 880, + 203, 881, 704, 203, 203, 703, 203, 203, 203, 1389, + 706, 702, 203, 203, 707, 1389, 203, 203, 203, 705, + 203, 1389, 882, 203, 1389, 708, 883, 203, 881, 884, + 203, 1389, 703, 203, 203, 885, 709, 706, 203, 203, + 886, 707, 203, 203, 203, 887, 705, 203, 203, 882, + 203, 710, 708, 883, 203, 203, 884, 203, 203, 1389, + + 203, 203, 885, 709, 203, 203, 1389, 886, 203, 203, + 203, 203, 887, 712, 203, 203, 203, 1389, 710, 711, + 203, 1389, 203, 888, 203, 203, 203, 1389, 203, 714, + 1389, 203, 889, 203, 1389, 203, 203, 1389, 203, 203, + 712, 203, 890, 203, 203, 891, 711, 203, 203, 203, + 888, 203, 1389, 203, 203, 713, 714, 203, 203, 889, + 203, 203, 203, 203, 203, 892, 203, 715, 203, 890, + 717, 203, 891, 893, 203, 203, 203, 203, 203, 716, + 203, 203, 713, 203, 203, 203, 894, 203, 203, 203, + 203, 203, 892, 203, 715, 203, 718, 717, 203, 895, + + 893, 203, 203, 203, 203, 203, 716, 203, 203, 203, + 203, 203, 1389, 894, 203, 1389, 719, 203, 203, 1389, + 203, 203, 896, 718, 1389, 203, 895, 1389, 897, 203, + 203, 1389, 720, 1389, 203, 203, 203, 898, 203, 203, + 203, 1389, 203, 719, 203, 203, 721, 203, 203, 896, + 723, 203, 203, 203, 203, 897, 899, 1389, 722, 720, + 203, 203, 900, 203, 898, 1389, 203, 203, 724, 203, + 203, 203, 203, 721, 203, 1389, 203, 723, 203, 203, + 203, 203, 203, 899, 725, 722, 203, 203, 901, 900, + 203, 203, 203, 1389, 726, 724, 203, 203, 203, 203, + + 902, 1389, 727, 203, 203, 1389, 1389, 1389, 903, 203, + 904, 725, 203, 203, 203, 901, 203, 1389, 203, 203, + 728, 726, 203, 203, 1389, 203, 729, 902, 203, 727, + 905, 203, 203, 203, 730, 903, 906, 904, 203, 203, + 1389, 203, 1389, 203, 203, 1389, 203, 728, 1389, 203, + 907, 203, 1389, 729, 908, 203, 203, 905, 909, 203, + 203, 730, 203, 906, 732, 203, 733, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 731, 907, 203, 203, + 203, 908, 203, 203, 1012, 909, 1389, 1013, 1389, 203, + 1389, 732, 1389, 733, 203, 203, 203, 203, 1014, 203, + + 203, 203, 203, 731, 203, 1015, 203, 203, 203, 203, + 203, 1012, 203, 203, 1013, 734, 1016, 203, 203, 736, + 203, 735, 1389, 203, 1017, 1014, 1389, 203, 203, 1389, + 1389, 203, 1015, 203, 1389, 203, 1018, 203, 1019, 203, + 203, 1020, 734, 1016, 203, 203, 736, 203, 735, 203, + 203, 1017, 738, 203, 739, 203, 203, 740, 203, 737, + 203, 203, 203, 1018, 203, 1019, 1389, 203, 1020, 203, + 1389, 1389, 203, 1021, 203, 1389, 203, 203, 1389, 738, + 203, 739, 1389, 203, 740, 203, 737, 1389, 203, 203, + 1389, 203, 1022, 741, 203, 1023, 203, 203, 203, 203, + + 1021, 203, 203, 742, 203, 203, 1024, 744, 203, 203, + 1025, 203, 203, 203, 743, 1389, 203, 203, 203, 1022, + 741, 203, 1023, 1026, 203, 203, 1027, 1389, 1389, 203, + 742, 1028, 203, 1024, 744, 203, 203, 1025, 203, 203, + 203, 743, 746, 203, 203, 203, 203, 203, 203, 203, + 1026, 1029, 203, 1027, 203, 745, 1389, 203, 1028, 203, + 1389, 747, 203, 1389, 1389, 1030, 1389, 203, 1389, 746, + 1031, 1032, 1033, 203, 203, 1034, 203, 203, 1029, 203, + 1389, 203, 745, 203, 203, 751, 203, 203, 747, 203, + 748, 203, 1030, 203, 203, 203, 1035, 1031, 1032, 1033, + + 1036, 203, 1034, 203, 203, 203, 1037, 752, 1389, 203, + 203, 203, 751, 1389, 203, 203, 1389, 748, 203, 1389, + 203, 1038, 203, 1035, 1389, 203, 1389, 1036, 203, 1389, + 203, 203, 203, 1037, 752, 203, 203, 1039, 203, 749, + 203, 203, 203, 203, 203, 1040, 754, 203, 1038, 750, + 203, 203, 203, 203, 1389, 1041, 753, 1389, 203, 1042, + 203, 1389, 203, 203, 1039, 203, 749, 203, 203, 203, + 203, 203, 1040, 754, 203, 203, 750, 203, 203, 1043, + 203, 755, 1041, 753, 203, 203, 1042, 203, 203, 756, + 203, 1044, 203, 203, 203, 1045, 203, 203, 757, 1046, + + 203, 1047, 203, 203, 203, 203, 1043, 1048, 755, 1389, + 203, 203, 203, 203, 1389, 203, 756, 1049, 1044, 1389, + 203, 203, 1045, 1052, 203, 757, 1046, 203, 1047, 1389, + 203, 203, 203, 1053, 1048, 1389, 203, 203, 203, 203, + 203, 203, 758, 203, 1049, 1389, 759, 1389, 203, 1054, + 1052, 203, 760, 1389, 761, 1055, 203, 1056, 203, 1057, + 1053, 1058, 203, 203, 203, 203, 203, 203, 203, 758, + 203, 203, 203, 759, 203, 203, 1054, 203, 203, 760, + 762, 761, 1055, 203, 1056, 203, 1057, 203, 1058, 203, + 1059, 203, 1389, 203, 203, 765, 1389, 1060, 203, 203, + + 203, 203, 1389, 1061, 203, 203, 771, 762, 203, 203, + 768, 203, 1389, 203, 203, 763, 203, 1059, 203, 203, + 203, 203, 765, 203, 1060, 1389, 1062, 203, 1063, 203, + 1061, 1389, 203, 771, 764, 203, 203, 768, 203, 203, + 203, 1050, 763, 203, 1051, 203, 203, 1064, 203, 1389, + 203, 1389, 203, 1062, 203, 1063, 203, 1065, 770, 203, + 769, 764, 1389, 203, 203, 203, 203, 766, 1050, 1066, + 203, 1051, 1389, 1389, 1064, 203, 203, 1389, 203, 203, + 767, 203, 1389, 203, 1065, 770, 203, 769, 203, 772, + 203, 203, 203, 203, 766, 1067, 1066, 203, 1068, 203, + + 773, 1389, 203, 203, 203, 203, 1389, 767, 203, 203, + 203, 1069, 1389, 203, 203, 203, 772, 203, 1389, 1389, + 203, 1389, 1067, 203, 203, 1068, 203, 773, 774, 1070, + 1389, 203, 1389, 203, 1389, 203, 203, 1071, 1069, 203, + 203, 203, 775, 203, 203, 776, 203, 203, 203, 203, + 203, 203, 203, 777, 1389, 774, 1070, 203, 203, 203, + 203, 778, 1072, 1073, 1071, 203, 203, 1074, 1389, 775, + 203, 203, 776, 203, 203, 203, 203, 1075, 1076, 203, + 777, 203, 1077, 203, 203, 203, 203, 203, 778, 1072, + 1073, 780, 203, 779, 1074, 203, 203, 1078, 203, 1079, + + 203, 203, 1080, 203, 1075, 1076, 203, 1389, 203, 1077, + 203, 203, 1389, 1389, 203, 1389, 203, 1389, 780, 1389, + 779, 203, 203, 203, 1078, 203, 1079, 203, 203, 1080, + 203, 203, 1081, 203, 781, 203, 203, 1082, 203, 203, + 203, 203, 784, 203, 203, 203, 203, 783, 203, 203, + 1389, 1083, 203, 782, 203, 203, 203, 1389, 203, 1081, + 1084, 781, 203, 203, 1082, 1389, 203, 203, 203, 784, + 1389, 203, 203, 203, 783, 1389, 203, 203, 1083, 203, + 782, 203, 203, 203, 203, 785, 203, 1084, 203, 203, + 787, 1085, 203, 203, 786, 1086, 1164, 203, 203, 1389, + + 1165, 1389, 203, 1389, 203, 1389, 203, 1389, 1389, 1166, + 1389, 203, 785, 203, 1167, 203, 203, 787, 1085, 203, + 203, 786, 1086, 1164, 203, 203, 203, 1165, 203, 203, + 788, 1389, 203, 203, 203, 203, 1166, 790, 203, 203, + 789, 1167, 203, 1168, 203, 1389, 1169, 203, 791, 1389, + 1389, 1170, 203, 203, 1389, 203, 1389, 788, 203, 203, + 203, 203, 203, 1171, 790, 203, 203, 789, 203, 203, + 1168, 203, 203, 1169, 203, 791, 203, 793, 1170, 203, + 1389, 203, 203, 792, 203, 203, 794, 1389, 203, 1172, + 1171, 203, 203, 203, 1173, 203, 203, 203, 1389, 203, + + 1389, 203, 203, 203, 793, 1389, 203, 795, 203, 203, + 792, 203, 796, 794, 797, 203, 1172, 203, 203, 203, + 203, 1173, 203, 203, 203, 203, 203, 800, 203, 203, + 203, 1389, 203, 203, 795, 1174, 798, 203, 1389, 796, + 1389, 797, 1175, 1389, 203, 1176, 203, 799, 1177, 203, + 1389, 203, 203, 203, 800, 203, 1178, 203, 203, 203, + 203, 203, 1174, 798, 203, 203, 1179, 801, 802, 1175, + 203, 203, 1176, 203, 799, 1177, 1389, 203, 203, 203, + 1389, 1389, 203, 1178, 203, 203, 1389, 203, 203, 203, + 1180, 1181, 203, 1179, 801, 802, 1182, 203, 203, 1389, + + 1389, 203, 1183, 203, 203, 1389, 203, 203, 203, 203, + 1184, 203, 803, 203, 203, 804, 203, 1180, 1181, 203, + 203, 1389, 805, 1182, 1185, 1186, 806, 203, 203, 1183, + 203, 1389, 203, 1389, 203, 203, 203, 1184, 1187, 803, + 203, 203, 804, 1188, 807, 1189, 203, 203, 203, 805, + 203, 1185, 1186, 806, 203, 203, 203, 1190, 203, 203, + 203, 1389, 808, 203, 1191, 1187, 1389, 203, 203, 203, + 1188, 807, 1189, 911, 203, 203, 1192, 203, 1193, 203, + 1389, 1389, 203, 203, 1190, 203, 203, 203, 203, 808, + 203, 1191, 912, 203, 203, 203, 203, 1389, 203, 1389, + + 911, 203, 1194, 1192, 203, 1193, 203, 203, 203, 1389, + 1195, 203, 1389, 203, 203, 203, 203, 203, 916, 912, + 203, 1389, 1196, 203, 913, 203, 203, 914, 203, 1194, + 203, 203, 1197, 1389, 203, 203, 203, 1195, 203, 915, + 1389, 203, 1198, 203, 203, 916, 203, 1389, 917, 1196, + 203, 913, 203, 203, 914, 203, 1199, 203, 203, 1197, + 203, 919, 918, 203, 1200, 203, 915, 203, 203, 1198, + 203, 203, 203, 203, 203, 917, 1201, 1389, 1389, 203, + 203, 203, 1389, 1199, 1202, 203, 1203, 203, 919, 918, + 203, 1200, 203, 1389, 203, 203, 920, 203, 203, 203, + + 203, 203, 203, 1201, 203, 203, 203, 203, 203, 203, + 203, 1202, 203, 1203, 1204, 203, 1205, 203, 1206, 1207, + 203, 1208, 203, 920, 1209, 203, 921, 203, 1389, 203, + 203, 203, 203, 203, 203, 1389, 203, 203, 1389, 203, + 203, 1204, 203, 1205, 1258, 1206, 1207, 203, 1208, 203, + 203, 1209, 203, 921, 203, 203, 203, 203, 203, 923, + 203, 203, 922, 1389, 203, 203, 203, 203, 203, 924, + 1260, 1258, 203, 1389, 203, 203, 203, 203, 203, 1389, + 927, 203, 203, 203, 203, 203, 923, 203, 203, 922, + 203, 203, 203, 203, 203, 203, 924, 1260, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 927, 203, 925, + 1261, 203, 1389, 926, 203, 203, 1262, 203, 203, 203, + 1263, 203, 203, 203, 1264, 203, 203, 203, 1389, 203, + 1389, 203, 203, 203, 928, 203, 925, 1261, 1389, 203, + 926, 203, 203, 1262, 1389, 203, 203, 1263, 1389, 203, + 203, 1264, 1265, 203, 1266, 929, 203, 203, 1267, 203, + 1268, 928, 203, 203, 930, 203, 203, 203, 1269, 203, + 203, 203, 1270, 203, 1389, 203, 1389, 1271, 203, 1265, + 931, 1266, 929, 203, 203, 1267, 1389, 1268, 1389, 203, + 203, 930, 203, 1272, 203, 1269, 1273, 203, 203, 1270, + + 203, 203, 203, 203, 1271, 203, 934, 931, 203, 932, + 203, 1274, 1275, 203, 203, 933, 203, 203, 1389, 203, + 1272, 203, 1389, 1273, 203, 203, 203, 203, 203, 203, + 203, 935, 203, 934, 1276, 203, 932, 203, 1274, 1275, + 203, 203, 933, 203, 203, 203, 203, 1389, 203, 937, + 1277, 203, 203, 203, 203, 203, 203, 936, 935, 203, + 1278, 1276, 1279, 1280, 203, 203, 203, 938, 203, 203, + 1389, 1281, 203, 203, 203, 1308, 937, 1277, 203, 203, + 1310, 1389, 203, 1389, 936, 1311, 1389, 1278, 1389, 1279, + 1280, 1389, 203, 203, 938, 203, 203, 203, 1281, 203, + + 203, 203, 1308, 939, 203, 203, 203, 1310, 203, 203, + 203, 203, 1311, 203, 1389, 203, 1389, 1312, 203, 1389, + 203, 1313, 1314, 203, 203, 1389, 203, 1389, 1389, 1389, + 939, 203, 1389, 1389, 1315, 203, 203, 203, 203, 203, + 203, 203, 203, 940, 1312, 203, 203, 203, 1313, 1314, + 203, 203, 203, 203, 203, 203, 941, 1316, 1317, 203, + 203, 1315, 942, 1389, 203, 203, 203, 1318, 203, 1389, + 940, 1389, 1319, 203, 1389, 1389, 1320, 1389, 203, 203, + 203, 203, 203, 941, 1316, 1317, 203, 203, 203, 942, + 203, 203, 203, 944, 1318, 203, 943, 1389, 946, 1319, + + 203, 945, 203, 1320, 203, 1389, 203, 1389, 203, 1389, + 1321, 203, 203, 1389, 203, 203, 203, 203, 203, 203, + 944, 1389, 203, 943, 203, 946, 1339, 203, 945, 203, + 203, 203, 203, 203, 203, 203, 203, 1321, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 947, 203, 1389, + 203, 203, 203, 1339, 948, 1389, 203, 203, 1340, 203, + 949, 203, 1341, 203, 203, 1389, 203, 203, 1389, 203, + 1342, 203, 1343, 1389, 947, 203, 203, 203, 950, 203, + 203, 948, 203, 203, 203, 1340, 203, 949, 1346, 1341, + 203, 203, 203, 203, 203, 1259, 1259, 1342, 203, 1343, + + 203, 1389, 203, 203, 203, 950, 1389, 203, 951, 203, + 1389, 203, 203, 203, 203, 1346, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 1309, 203, 951, 203, 952, 203, 203, + 953, 203, 1353, 203, 203, 203, 203, 1284, 1259, 203, + 203, 203, 1389, 203, 1389, 203, 1389, 203, 1389, 203, + 1309, 203, 1389, 203, 952, 203, 1354, 953, 203, 1353, + 203, 203, 203, 203, 203, 203, 203, 203, 955, 203, + 203, 954, 203, 203, 1357, 1324, 203, 1360, 203, 203, + 1362, 1364, 956, 1354, 1366, 203, 1368, 203, 203, 203, + + 1389, 203, 203, 203, 1389, 955, 203, 203, 954, 203, + 203, 1357, 1324, 203, 1360, 203, 203, 1362, 1364, 956, + 203, 1366, 203, 1368, 1370, 203, 203, 203, 203, 1372, + 203, 203, 957, 203, 958, 203, 1374, 959, 203, 1376, + 203, 1378, 1380, 203, 1338, 1338, 1389, 203, 1389, 203, + 1382, 1370, 1389, 1389, 203, 203, 1372, 203, 203, 957, + 203, 958, 203, 1374, 959, 203, 1376, 203, 1378, 1380, + 203, 960, 203, 962, 203, 203, 203, 1382, 203, 203, + 203, 1389, 961, 203, 203, 203, 1352, 1389, 203, 1389, + 1345, 1338, 1389, 1389, 1389, 1389, 1389, 1389, 960, 203, + + 962, 203, 203, 203, 1389, 203, 203, 203, 1389, 961, + 203, 203, 203, 1352, 203, 203, 203, 203, 203, 203, + 203, 203, 1389, 1389, 203, 203, 203, 1389, 1389, 203, + 203, 1389, 1356, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, + 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, 1356, + 203, 203, 964, 203, 203, 203, 963, 1389, 203, 203, + 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 203, 1389, 203, 203, 964, + 203, 203, 203, 963, 965, 203, 203, 203, 203, 203, + + 203, 203, 966, 203, 203, 1389, 203, 969, 203, 203, + 203, 203, 203, 203, 203, 967, 968, 1389, 203, 203, + 203, 965, 203, 203, 1389, 203, 203, 1389, 1389, 966, + 203, 203, 1389, 203, 969, 203, 203, 203, 203, 203, + 203, 203, 967, 968, 203, 203, 203, 203, 971, 203, + 203, 203, 203, 203, 203, 1389, 203, 970, 203, 1389, + 1389, 1389, 203, 203, 203, 1389, 1389, 1389, 1389, 1389, + 1389, 203, 203, 1389, 1389, 971, 1389, 1389, 203, 203, + 203, 203, 1389, 203, 970, 203, 972, 1389, 203, 203, + 203, 203, 203, 1389, 1389, 1389, 973, 203, 203, 203, + + 203, 203, 1389, 1389, 1389, 1389, 203, 203, 203, 1389, + 974, 1389, 1389, 972, 1389, 203, 203, 203, 1389, 203, + 1389, 1389, 1389, 973, 203, 203, 203, 203, 203, 1389, + 203, 1389, 1389, 203, 203, 203, 203, 974, 203, 975, + 1389, 203, 203, 203, 203, 203, 203, 1389, 203, 976, + 203, 203, 1389, 203, 977, 1389, 1389, 203, 203, 1389, + 203, 203, 1389, 203, 1389, 203, 975, 1389, 203, 203, + 203, 1389, 203, 203, 1389, 203, 976, 203, 203, 203, + 978, 977, 1389, 203, 203, 203, 1389, 203, 203, 203, + 203, 1389, 1389, 1389, 979, 1389, 1389, 203, 203, 203, + + 203, 1389, 203, 1389, 1389, 1389, 203, 978, 203, 1389, + 203, 203, 1389, 1389, 1389, 1389, 203, 203, 203, 1389, + 980, 979, 1389, 1389, 203, 203, 203, 203, 203, 203, + 1389, 1389, 981, 982, 203, 203, 203, 203, 1389, 1389, + 1389, 1389, 203, 203, 203, 203, 203, 980, 1389, 1389, + 203, 203, 203, 203, 1389, 203, 203, 1389, 1389, 981, + 982, 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, + 203, 203, 203, 203, 1389, 1389, 1389, 203, 203, 203, + 203, 983, 203, 203, 1389, 1389, 203, 203, 203, 1389, + 984, 203, 203, 203, 1389, 203, 1389, 203, 1389, 203, + + 985, 1389, 203, 1389, 1389, 203, 203, 203, 983, 203, + 203, 1389, 1389, 203, 203, 203, 203, 984, 203, 203, + 1389, 986, 1389, 1389, 203, 1389, 203, 985, 987, 203, + 1389, 203, 203, 203, 203, 203, 203, 203, 1389, 1389, + 1389, 203, 203, 203, 1389, 1389, 203, 1389, 986, 1389, + 203, 203, 203, 203, 988, 987, 203, 1389, 203, 203, + 1389, 1389, 203, 203, 1389, 1389, 203, 1389, 203, 203, + 1389, 1389, 1389, 203, 1389, 990, 1389, 203, 203, 203, + 203, 988, 989, 203, 203, 991, 203, 203, 1389, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 1389, 1389, + + 203, 1389, 990, 1389, 1389, 203, 1389, 203, 1389, 989, + 203, 203, 991, 203, 203, 1389, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 993, 992, 203, 203, 203, + 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, + 203, 1389, 1389, 994, 995, 203, 1389, 203, 203, 203, + 1389, 203, 993, 992, 203, 203, 203, 203, 1389, 203, + 203, 1389, 203, 1389, 203, 203, 203, 203, 1389, 203, + 994, 995, 203, 203, 203, 203, 203, 1389, 203, 996, + 1389, 203, 1389, 203, 203, 1389, 203, 203, 1389, 203, + 203, 203, 203, 203, 203, 1389, 203, 997, 1389, 1389, + + 203, 203, 203, 203, 1389, 203, 996, 1389, 1389, 1389, + 203, 203, 1389, 1389, 203, 1389, 203, 203, 1389, 203, + 203, 203, 1389, 1389, 997, 203, 203, 203, 203, 203, + 203, 1389, 998, 203, 1389, 999, 1389, 203, 203, 1389, + 1389, 1389, 1389, 1389, 203, 1389, 203, 1389, 1389, 1389, + 1389, 203, 203, 203, 203, 203, 203, 1389, 1389, 998, + 203, 1389, 999, 1389, 203, 203, 1389, 203, 203, 203, + 1001, 203, 1389, 203, 203, 203, 1000, 1389, 203, 203, + 203, 1389, 1389, 203, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 203, 203, 203, 1001, 1003, 1389, + + 1389, 203, 203, 1000, 1389, 1389, 203, 203, 203, 203, + 203, 203, 1389, 1389, 1389, 203, 203, 1002, 1389, 1389, + 203, 203, 203, 1389, 203, 1003, 1389, 1389, 1389, 203, + 1004, 1389, 1389, 1389, 203, 203, 203, 203, 203, 1389, + 1389, 1389, 203, 203, 1002, 1389, 1389, 203, 203, 203, + 1389, 203, 1389, 1005, 1389, 1389, 203, 1004, 203, 1006, + 203, 203, 203, 203, 203, 203, 203, 1007, 203, 203, + 203, 1389, 203, 1389, 203, 1389, 1389, 1389, 1389, 203, + 1005, 1389, 203, 1389, 203, 203, 1006, 203, 1389, 203, + 203, 203, 203, 203, 1007, 203, 203, 203, 203, 203, + + 203, 203, 203, 1009, 203, 1389, 203, 203, 203, 203, + 203, 203, 203, 203, 1008, 1389, 203, 1389, 203, 1389, + 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, + 1009, 203, 203, 1010, 203, 203, 1389, 203, 203, 203, + 203, 1008, 1389, 203, 203, 203, 203, 203, 1389, 203, + 203, 203, 1389, 203, 1389, 203, 203, 1389, 1389, 203, + 1010, 1389, 203, 1389, 203, 203, 1389, 1389, 203, 203, + 203, 203, 1389, 203, 203, 203, 1389, 1389, 203, 1389, + 203, 1389, 1088, 203, 1389, 1389, 203, 1389, 203, 203, + 1089, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, + + 203, 203, 203, 1389, 203, 1389, 1389, 203, 203, 1088, + 203, 1389, 1090, 203, 203, 203, 203, 1089, 1389, 1389, + 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, 1389, + 203, 203, 203, 1389, 203, 203, 1389, 203, 1092, 1090, + 203, 203, 203, 203, 1389, 1091, 203, 1389, 1389, 203, + 203, 203, 203, 1093, 203, 1389, 1389, 203, 203, 203, + 1389, 203, 203, 1389, 203, 1092, 1389, 203, 1389, 203, + 1389, 1389, 1091, 203, 203, 1389, 1094, 203, 203, 203, + 1093, 203, 203, 1389, 1389, 203, 1389, 1389, 203, 203, + 203, 203, 1095, 1389, 1389, 1389, 1389, 203, 203, 1389, + + 1389, 203, 203, 1094, 203, 203, 203, 1389, 1389, 203, + 203, 203, 1096, 1389, 203, 203, 203, 203, 1389, 1095, + 1097, 1389, 1098, 1389, 203, 203, 203, 1389, 1389, 203, + 203, 203, 203, 203, 1389, 1389, 203, 203, 203, 1096, + 203, 203, 203, 203, 1389, 1389, 203, 1097, 203, 1098, + 1099, 1389, 1389, 203, 203, 203, 203, 203, 1100, 203, + 203, 1389, 1389, 203, 203, 1389, 203, 203, 1389, 203, + 203, 1389, 1389, 203, 203, 203, 1101, 1099, 1389, 1389, + 1102, 203, 203, 203, 203, 1100, 203, 203, 203, 1389, + 1389, 203, 1104, 203, 203, 1389, 203, 203, 1103, 1389, + + 203, 203, 203, 1101, 203, 203, 1389, 1102, 1389, 1389, + 203, 203, 203, 203, 203, 203, 203, 1389, 1105, 1104, + 203, 203, 1389, 203, 203, 1103, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, + 203, 203, 1106, 203, 203, 1105, 1389, 203, 203, 1389, + 203, 203, 203, 203, 1108, 1107, 1389, 1389, 203, 203, + 203, 203, 1389, 203, 203, 203, 1389, 203, 1109, 1106, + 203, 203, 203, 1389, 1110, 203, 1389, 203, 203, 203, + 203, 1108, 1107, 1389, 1389, 203, 203, 203, 203, 1389, + 203, 203, 1111, 1389, 203, 1109, 203, 203, 203, 203, + + 1389, 1110, 203, 1389, 203, 203, 1389, 203, 1389, 1112, + 1389, 1389, 203, 1389, 203, 203, 1389, 203, 203, 1111, + 1389, 203, 203, 203, 1389, 203, 1389, 1389, 203, 203, + 203, 203, 203, 1113, 1389, 1389, 1112, 1114, 203, 203, + 1389, 203, 203, 203, 1116, 203, 203, 1115, 203, 203, + 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, + 1113, 1389, 1389, 203, 1114, 203, 203, 1389, 203, 203, + 203, 1116, 203, 203, 1115, 203, 203, 203, 1389, 203, + 203, 1389, 203, 203, 203, 203, 1389, 203, 203, 1118, + 203, 203, 203, 203, 203, 203, 1389, 203, 1120, 203, + + 203, 1389, 1117, 203, 203, 203, 1389, 203, 1389, 203, + 203, 203, 1389, 203, 203, 203, 1118, 203, 203, 203, + 1389, 203, 1389, 203, 203, 1120, 1389, 203, 1119, 1117, + 1389, 203, 203, 203, 203, 1389, 203, 203, 203, 203, + 203, 203, 1122, 1121, 203, 1389, 203, 203, 203, 203, + 203, 203, 1389, 1389, 203, 1119, 1389, 1389, 1389, 203, + 203, 1389, 1389, 203, 1389, 203, 203, 1389, 203, 1122, + 1121, 1389, 1389, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 1123, 203, + 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, 1389, + + 1389, 1389, 1389, 203, 203, 1389, 203, 203, 1389, 203, + 203, 203, 203, 1389, 203, 1123, 203, 203, 203, 203, + 203, 203, 203, 203, 1389, 203, 1389, 1125, 203, 1124, + 203, 203, 203, 203, 203, 1389, 1389, 203, 1389, 1126, + 1389, 1389, 1127, 1389, 203, 1389, 1389, 203, 203, 1389, + 203, 1389, 1389, 1389, 1125, 203, 1124, 1389, 203, 203, + 203, 203, 1389, 1128, 203, 203, 1126, 1389, 1389, 1127, + 203, 203, 1389, 1389, 203, 203, 203, 203, 203, 203, + 1389, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 203, + 1128, 1389, 203, 1389, 1389, 1389, 1389, 203, 1389, 1129, + + 1389, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, + 203, 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, + 203, 203, 1389, 203, 1389, 203, 1129, 1389, 203, 1389, + 203, 1389, 1389, 203, 203, 1389, 203, 1389, 1389, 1130, + 1389, 203, 1389, 203, 1389, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 1132, 203, 1389, 203, 1131, 203, + 203, 1389, 1389, 203, 1389, 203, 1130, 203, 1389, 1389, + 203, 1389, 203, 1389, 1389, 1389, 203, 203, 203, 1389, + 203, 1132, 1389, 1389, 1389, 1131, 203, 1389, 1389, 203, + 203, 203, 203, 1389, 203, 1389, 203, 1133, 203, 203, + + 203, 203, 1389, 1134, 203, 203, 1135, 203, 1389, 203, + 203, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, 203, + 1389, 1389, 1389, 203, 1133, 203, 1389, 203, 203, 1389, + 1134, 1389, 203, 1135, 203, 1389, 203, 203, 203, 1389, + 203, 203, 203, 1136, 203, 203, 203, 203, 1389, 203, + 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 1389, + 1389, 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, + 1136, 203, 203, 1137, 203, 1389, 203, 203, 203, 1389, + 203, 203, 1138, 203, 203, 203, 1389, 203, 203, 203, + 203, 1389, 1389, 203, 203, 203, 1389, 1139, 1389, 1389, + + 1137, 1389, 1389, 203, 203, 203, 1389, 1389, 1389, 1138, + 203, 203, 203, 203, 203, 203, 203, 203, 1389, 1389, + 203, 203, 203, 203, 1139, 1140, 1389, 1389, 1389, 1389, + 203, 203, 203, 203, 1389, 1389, 1389, 203, 1141, 203, + 203, 203, 203, 203, 203, 1389, 1389, 203, 203, 203, + 203, 1142, 1140, 1389, 1389, 203, 1389, 203, 203, 203, + 203, 203, 1389, 203, 203, 1141, 203, 1143, 203, 203, + 203, 203, 1389, 203, 203, 203, 203, 1389, 1142, 1389, + 1389, 1389, 203, 203, 203, 203, 203, 1144, 203, 1389, + 203, 203, 1389, 203, 1143, 203, 1389, 203, 203, 1389, + + 203, 203, 1389, 203, 1389, 1389, 1389, 1389, 1389, 1389, + 203, 203, 1145, 203, 1144, 1389, 203, 203, 203, 1389, + 203, 203, 203, 1389, 1146, 203, 203, 203, 203, 203, + 203, 1389, 1147, 1389, 203, 203, 203, 203, 203, 1145, + 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, 1389, + 203, 1146, 203, 203, 203, 1389, 203, 203, 1389, 1147, + 1389, 203, 203, 203, 203, 203, 1389, 203, 1389, 1148, + 1389, 1389, 203, 1149, 203, 203, 1389, 203, 203, 1150, + 1389, 1389, 1389, 203, 203, 203, 1389, 203, 1389, 1389, + 1389, 1389, 203, 203, 203, 1389, 1148, 203, 1389, 203, + + 1149, 203, 203, 203, 1151, 203, 1150, 1389, 1389, 203, + 203, 203, 203, 1389, 203, 1389, 203, 1389, 203, 1389, + 203, 203, 1152, 203, 203, 203, 203, 203, 203, 1389, + 203, 1151, 203, 1153, 1389, 1154, 203, 203, 1389, 1389, + 1389, 1389, 1389, 203, 1389, 203, 203, 1389, 203, 1152, + 203, 1389, 203, 203, 203, 203, 1155, 1389, 203, 203, + 1153, 1389, 1154, 1389, 203, 1389, 1389, 203, 1389, 203, + 203, 1389, 1156, 203, 203, 203, 1389, 203, 1389, 203, + 203, 1389, 203, 1155, 1389, 203, 203, 1389, 203, 1389, + 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, 1156, + + 1389, 203, 1389, 1389, 203, 1389, 203, 1157, 1389, 203, + 1389, 203, 1389, 203, 1389, 203, 1389, 203, 1158, 203, + 203, 1389, 1159, 203, 1389, 203, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 1157, 203, 1389, 1389, 203, 203, + 1389, 203, 203, 1389, 203, 1158, 203, 1389, 1389, 1159, + 203, 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, + 1389, 1161, 203, 203, 1389, 203, 203, 1389, 203, 203, + 1160, 1389, 203, 1389, 203, 203, 1389, 1389, 203, 203, + 1162, 1389, 1389, 1389, 203, 1389, 1389, 1389, 1161, 1389, + 203, 203, 203, 203, 1389, 1389, 1389, 1160, 203, 203, + + 1389, 203, 203, 203, 1389, 1389, 203, 1162, 1389, 1211, + 203, 203, 203, 203, 203, 1389, 203, 203, 203, 203, + 203, 203, 203, 1389, 1389, 203, 203, 1389, 1389, 203, + 203, 1389, 1389, 1389, 1389, 1389, 1211, 203, 1389, 203, + 203, 203, 1389, 203, 203, 1389, 203, 203, 203, 203, + 1389, 203, 203, 203, 1212, 1389, 203, 203, 203, 203, + 203, 203, 1214, 1213, 203, 203, 203, 203, 203, 1389, + 203, 1389, 203, 203, 203, 1389, 1389, 1389, 203, 203, + 1389, 1212, 203, 1389, 203, 203, 203, 203, 203, 1214, + 1213, 203, 203, 203, 203, 203, 1389, 203, 203, 203, + + 203, 1389, 203, 203, 203, 203, 203, 1389, 203, 203, + 1216, 203, 1217, 1215, 203, 203, 203, 1389, 203, 203, + 1389, 1389, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, + 203, 203, 203, 203, 1389, 203, 1389, 1216, 203, 1217, + 1215, 203, 203, 203, 1389, 203, 203, 203, 203, 203, + 203, 203, 1389, 1389, 203, 203, 1218, 1389, 1389, 203, + 203, 203, 1219, 203, 1389, 1389, 1389, 1389, 203, 1389, + 1389, 1389, 1389, 203, 203, 203, 203, 203, 1389, 1389, + 1389, 203, 203, 1218, 1389, 1220, 203, 203, 203, 1219, + 203, 1221, 1389, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 1389, 203, 203, 1222, 203, 1389, 1389, 203, + 1389, 1389, 1220, 1389, 1389, 203, 1389, 203, 1221, 1389, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 1389, + 203, 203, 1222, 203, 1389, 1389, 203, 1389, 203, 1389, + 203, 1224, 203, 1389, 203, 203, 1223, 1389, 1389, 203, + 203, 203, 1389, 203, 203, 1389, 1389, 203, 203, 203, + 1389, 1389, 1389, 203, 203, 203, 1389, 203, 1224, 203, + 1389, 1389, 203, 1223, 1389, 1389, 1389, 203, 203, 1389, + 203, 1389, 1389, 1225, 203, 203, 203, 1389, 1389, 1389, + 203, 203, 203, 203, 203, 203, 203, 1389, 1389, 203, + + 203, 203, 1389, 1226, 203, 203, 1389, 1389, 203, 1389, + 1225, 1389, 1389, 203, 1389, 1389, 1389, 1389, 1389, 203, + 203, 203, 203, 1389, 1389, 1389, 203, 203, 203, 1389, + 1226, 203, 203, 1389, 203, 203, 203, 203, 1227, 203, + 203, 203, 203, 203, 203, 1228, 203, 203, 203, 203, + 203, 203, 1389, 1389, 1389, 203, 1389, 203, 203, 1389, + 1389, 203, 1389, 203, 203, 1227, 203, 203, 203, 203, + 203, 203, 1228, 203, 203, 203, 203, 203, 203, 203, + 1389, 203, 203, 1389, 203, 203, 203, 1229, 203, 203, + 1231, 203, 1389, 1230, 203, 203, 1389, 1389, 1389, 203, + + 203, 1389, 1389, 1389, 1389, 1389, 203, 1389, 203, 203, + 1389, 1389, 1389, 203, 1229, 203, 203, 1231, 203, 1389, + 1230, 203, 203, 203, 1389, 1389, 203, 203, 203, 1389, + 203, 1389, 203, 203, 1389, 1389, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 1389, 1389, 203, 1389, 203, 1389, + 203, 203, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, + 203, 1389, 1389, 203, 203, 203, 203, 1389, 203, 203, + 203, 1389, 203, 203, 203, 203, 1389, 1389, 203, 203, + 1389, 203, 1389, 203, 203, 1233, 1389, 1389, 203, 203, + 203, 1389, 203, 203, 1389, 203, 1389, 203, 1389, 203, + + 1389, 203, 203, 1389, 1389, 203, 203, 203, 203, 203, + 203, 203, 1233, 1232, 203, 203, 203, 1389, 1389, 203, + 203, 1234, 203, 203, 1389, 203, 1389, 203, 1389, 203, + 1389, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, + 1232, 203, 1389, 203, 1235, 203, 203, 203, 1234, 203, + 203, 203, 203, 1389, 203, 1389, 203, 203, 1389, 1389, + 203, 203, 203, 203, 203, 1389, 203, 203, 203, 1389, + 203, 1235, 203, 203, 203, 1236, 203, 203, 203, 203, + 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 1389, + 203, 203, 1237, 1389, 203, 203, 1389, 1389, 1389, 1389, + + 203, 1389, 1236, 203, 203, 203, 203, 1389, 203, 203, + 203, 1389, 1389, 203, 203, 203, 203, 1389, 203, 1237, + 1239, 203, 1389, 203, 1389, 1389, 203, 203, 203, 203, + 203, 1389, 203, 203, 203, 1238, 203, 203, 1389, 203, + 1389, 1389, 203, 203, 1389, 1389, 1389, 1239, 203, 1389, + 203, 1389, 1389, 203, 203, 203, 203, 1389, 1389, 1389, + 203, 203, 1238, 203, 203, 1241, 203, 203, 1240, 203, + 1389, 203, 1389, 1389, 203, 203, 203, 203, 1243, 1389, + 1389, 1389, 1389, 203, 203, 203, 1389, 1242, 203, 1389, + 1389, 203, 1241, 1389, 203, 1240, 203, 1389, 203, 1389, + + 1389, 203, 203, 203, 203, 1243, 203, 1389, 203, 1389, + 203, 203, 203, 203, 1242, 203, 1244, 1389, 203, 1389, + 1245, 1389, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, + 1389, 203, 203, 203, 1389, 203, 203, 203, 1389, 1389, + 203, 203, 1389, 1244, 1389, 203, 1389, 1245, 203, 1389, + 203, 1389, 203, 1389, 203, 1246, 203, 1389, 203, 203, + 203, 1389, 1389, 203, 203, 1389, 1389, 203, 203, 203, + 1389, 203, 1389, 203, 1247, 203, 1389, 203, 203, 203, + 1389, 1389, 1246, 203, 1389, 1389, 1389, 203, 1389, 1389, + 203, 1389, 1248, 1389, 203, 1389, 203, 203, 203, 1389, + + 203, 1247, 203, 1389, 1389, 203, 203, 1389, 1389, 203, + 203, 203, 1389, 1249, 1389, 203, 203, 203, 1389, 1248, + 203, 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, + 1389, 1389, 203, 1389, 203, 1389, 203, 1389, 203, 203, + 1249, 1389, 203, 203, 203, 1250, 1389, 203, 203, 1389, + 1389, 1251, 203, 203, 1389, 203, 203, 1389, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 203, 203, + 1389, 203, 1250, 1389, 203, 1389, 1389, 1252, 1251, 1389, + 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, + + 203, 203, 203, 1389, 1252, 1389, 1254, 203, 1253, 1389, + 1389, 1389, 203, 203, 203, 203, 203, 1389, 1389, 1389, + 203, 203, 1389, 1389, 1389, 203, 203, 203, 1389, 203, + 203, 1389, 203, 1254, 203, 1253, 1389, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 203, 1389, + 203, 203, 1389, 203, 1389, 1389, 203, 203, 1389, 203, + 1389, 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, + 203, 203, 203, 203, 1255, 203, 1389, 203, 203, 1256, + 203, 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, + 1389, 203, 1389, 1389, 203, 203, 1389, 203, 203, 1389, + + 203, 1255, 203, 1389, 1389, 203, 1256, 203, 203, 203, + 203, 203, 203, 203, 203, 1389, 203, 1389, 203, 203, + 1389, 203, 1389, 1389, 203, 203, 203, 203, 203, 1389, + 1283, 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, + 203, 203, 1389, 1389, 203, 1389, 203, 1389, 203, 1389, + 203, 203, 203, 203, 203, 203, 203, 1283, 1389, 1389, + 203, 203, 203, 1389, 203, 203, 1389, 203, 1284, 1259, + 1389, 203, 203, 1389, 1285, 203, 1389, 203, 203, 203, + 1389, 203, 1389, 203, 203, 1389, 1389, 1389, 1286, 203, + 1389, 203, 203, 203, 203, 1389, 203, 203, 1389, 203, + + 1389, 1285, 203, 203, 1389, 203, 203, 1389, 1389, 1389, + 203, 203, 203, 203, 1389, 1286, 203, 1389, 203, 203, + 203, 203, 203, 203, 203, 1389, 203, 1389, 203, 203, + 203, 1287, 1288, 203, 1389, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 1287, 1288, + 1389, 1289, 203, 203, 203, 203, 203, 1389, 203, 203, + 203, 203, 1290, 203, 203, 203, 1389, 203, 203, 203, + 203, 203, 203, 203, 1389, 203, 203, 1389, 1289, 203, + 203, 203, 203, 203, 1389, 203, 203, 203, 1291, 1290, + + 1389, 203, 203, 203, 1389, 203, 1389, 203, 203, 203, + 1389, 1389, 203, 203, 1389, 1389, 203, 203, 1389, 203, + 1389, 1389, 203, 203, 203, 1291, 203, 1389, 1389, 203, + 203, 203, 203, 1389, 1292, 203, 203, 203, 1389, 203, + 1293, 1389, 203, 203, 203, 203, 1389, 203, 1389, 203, + 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, 1389, + 1389, 1292, 1389, 203, 203, 1389, 203, 1293, 1389, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 1389, 203, + 203, 203, 203, 203, 203, 203, 203, 1389, 203, 1389, + 1294, 203, 1389, 203, 1295, 1389, 203, 1389, 203, 203, + + 203, 1389, 203, 203, 203, 1389, 1389, 203, 203, 1296, + 203, 203, 203, 203, 203, 203, 1389, 1294, 203, 203, + 203, 1295, 203, 203, 1297, 203, 203, 1389, 1389, 203, + 203, 203, 1389, 203, 203, 203, 1296, 1389, 1389, 1389, + 203, 203, 1389, 1389, 1389, 203, 203, 1389, 1389, 203, + 1389, 1297, 203, 1389, 203, 1389, 203, 1298, 1389, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 1389, + 203, 1299, 203, 203, 1389, 203, 1389, 1389, 203, 203, + 1389, 203, 1389, 1389, 1298, 1389, 203, 1389, 1389, 1389, + 203, 203, 203, 203, 1389, 203, 1389, 203, 1299, 1389, + + 203, 1389, 203, 1300, 203, 203, 203, 203, 203, 203, + 203, 203, 1389, 1389, 203, 203, 203, 1389, 1389, 203, + 203, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1300, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, + 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, 1389, + 203, 203, 1389, 203, 1389, 203, 1301, 1389, 203, 203, + 203, 203, 1389, 203, 1389, 1302, 203, 203, 1303, 203, + 1389, 203, 1389, 1389, 203, 203, 1389, 203, 203, 203, + 203, 1389, 203, 1301, 1389, 203, 203, 203, 203, 1389, + 203, 1389, 1302, 203, 203, 1303, 203, 203, 203, 203, + + 1389, 203, 1389, 1305, 203, 1304, 203, 203, 1306, 203, + 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 203, 1389, + 1389, 203, 1389, 203, 203, 1389, 203, 203, 203, 1389, + 1305, 203, 1304, 1389, 203, 1306, 203, 203, 1389, 203, + 203, 1389, 203, 203, 203, 203, 203, 203, 203, 1389, + 203, 1389, 203, 203, 203, 203, 1323, 203, 1389, 1389, + 1389, 203, 203, 203, 203, 1389, 1389, 203, 1389, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 1389, 203, + 203, 203, 203, 1323, 203, 1326, 1325, 1389, 203, 203, + 203, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 1389, 203, 203, 203, 203, + 203, 1389, 1326, 1325, 203, 1389, 203, 203, 203, 203, + 203, 1389, 203, 203, 203, 1389, 203, 203, 203, 1389, + 203, 1389, 203, 203, 203, 203, 203, 203, 1327, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 1328, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, + 1389, 1389, 203, 203, 1389, 1327, 203, 203, 203, 203, + 1389, 1389, 203, 203, 203, 203, 1389, 1328, 203, 203, + 1389, 1389, 203, 203, 203, 203, 203, 1329, 1330, 1389, + 1389, 1389, 1331, 203, 203, 203, 1332, 203, 203, 203, + + 203, 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, + 1389, 203, 203, 203, 1329, 1330, 203, 1389, 203, 1331, + 203, 203, 1389, 1332, 203, 203, 203, 203, 203, 1389, + 203, 203, 1389, 203, 203, 203, 203, 1389, 203, 203, + 203, 1389, 203, 203, 1389, 203, 1389, 1389, 203, 1389, + 203, 1389, 203, 1389, 1389, 203, 203, 203, 203, 1389, + 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, 203, + 203, 1334, 1333, 1389, 203, 203, 1389, 203, 1335, 203, + 203, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 203, 1336, 203, 203, 1334, 1333, + + 203, 203, 203, 1345, 1338, 1335, 203, 203, 1389, 203, + 1347, 203, 1389, 203, 203, 1389, 203, 1389, 1389, 203, + 203, 203, 1336, 203, 1389, 1389, 1389, 203, 203, 203, + 203, 1389, 203, 203, 1389, 1389, 203, 1347, 203, 1389, + 203, 203, 1389, 203, 1389, 1389, 203, 203, 203, 1389, + 203, 1389, 1389, 1389, 203, 203, 203, 203, 203, 203, + 203, 1389, 203, 203, 203, 203, 203, 203, 203, 1389, + 203, 1348, 203, 203, 203, 203, 203, 203, 203, 203, + 1389, 203, 1389, 203, 203, 203, 1389, 203, 1389, 203, + 1389, 203, 1389, 203, 1389, 203, 1389, 203, 1348, 203, + + 203, 203, 203, 203, 1389, 203, 203, 203, 203, 1389, + 203, 203, 203, 1389, 203, 1349, 203, 1389, 1389, 1389, + 203, 203, 1389, 1389, 1389, 1389, 203, 203, 1389, 203, + 1389, 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, + 203, 203, 1349, 203, 1389, 203, 1389, 203, 203, 1389, + 203, 203, 1389, 203, 203, 203, 203, 1389, 203, 203, + 203, 1350, 1389, 203, 203, 203, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, + 1389, 203, 203, 203, 1389, 203, 203, 203, 1350, 1389, + 203, 203, 1389, 203, 1389, 203, 203, 1389, 203, 203, + + 203, 203, 1358, 203, 1389, 203, 203, 203, 1389, 203, + 1389, 203, 203, 1389, 1389, 203, 203, 1389, 1389, 1389, + 1389, 203, 203, 1389, 1389, 1389, 203, 203, 1389, 1358, + 1389, 1389, 203, 1389, 203, 1389, 203, 1389, 203, 203, + 1389, 1389, 203, 203, 1389, 1389, 1389, 1389, 203, 47, + 47, 47, 47, 47, 90, 1389, 1389, 90, 90, 188, + 188, 188, 1389, 188, 190, 1389, 190, 190, 190, 193, + 1389, 193, 193, 193, 203, 1389, 203, 203, 203, 7, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389 } ; -static const flex_int16_t yy_chk[9032] = +static const flex_int16_t yy_chk[9157] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2110,980 +2131,993 @@ static const flex_int16_t yy_chk[9032] = 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 27, 28, 22, 23, 30, 21, - 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, + 27, 21, 22, 28, 23, 21, 21, 31, 37, 28, - 41, 23, 22, 41, 23, 1370, 44, 23, 21, 22, + 45, 23, 22, 1392, 23, 50, 50, 23, 21, 22, 21, 27, 28, 22, 23, 30, 21, 27, 21, 22, - 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, - 41, 23, 24, 44, 23, 25, 24, 25, 49, 49, - 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, - 55, 32, 50, 50, 33, 43, 43, 58, 58, 24, - 1364, 55, 25, 24, 25, 1363, 34, 24, 32, 25, - 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, - 34, 33, 43, 43, 100, 26, 34, 34, 26, 103, - 36, 26, 29, 34, 26, 1362, 36, 26, 29, 29, - - 29, 42, 86, 86, 26, 29, 36, 34, 1361, 42, - 1359, 100, 26, 34, 34, 26, 103, 36, 26, 29, - 1357, 26, 35, 36, 26, 29, 29, 29, 42, 104, - 35, 38, 29, 101, 35, 38, 42, 35, 35, 38, - 81, 101, 81, 106, 81, 38, 1355, 81, 1353, 35, - 102, 1351, 81, 102, 1349, 107, 104, 35, 38, 1347, - 101, 35, 38, 1345, 35, 35, 38, 81, 101, 81, - 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, - 102, 39, 107, 39, 113, 39, 39, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 188, 188, 1343, - - 39, 1341, 39, 110, 1339, 39, 105, 105, 39, 109, - 39, 113, 39, 39, 40, 112, 109, 67, 40, 67, - 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, - 117, 40, 1337, 105, 105, 1333, 109, 1155, 1155, 1288, - 1288, 40, 112, 109, 67, 40, 67, 105, 40, 40, - 67, 67, 112, 116, 116, 40, 67, 117, 40, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, - 68, 114, 1329, 1322, 68, 1315, 114, 121, 68, 61, - 61, 61, 70, 123, 68, 61, 70, 61, 124, 118, - - 120, 120, 70, 61, 68, 61, 119, 68, 114, 61, - 61, 68, 70, 114, 121, 68, 125, 127, 1301, 70, - 123, 68, 61, 70, 61, 124, 1287, 120, 120, 70, - 61, 68, 61, 1263, 128, 1239, 61, 61, 1193, 70, - 1147, 1072, 997, 125, 127, 61, 62, 62, 898, 62, - 62, 62, 62, 62, 62, 799, 671, 129, 71, 72, - 73, 128, 71, 72, 73, 62, 62, 62, 71, 72, - 73, 130, 62, 77, 132, 126, 62, 77, 71, 72, - 73, 126, 62, 77, 129, 71, 72, 73, 133, 71, - 72, 73, 62, 77, 543, 71, 72, 73, 130, 62, - - 77, 132, 126, 62, 77, 71, 72, 73, 126, 62, - 77, 416, 288, 83, 135, 133, 83, 83, 136, 62, - 77, 62, 63, 83, 78, 192, 63, 138, 78, 63, - 63, 131, 78, 83, 131, 190, 63, 139, 78, 63, - 83, 135, 63, 83, 83, 136, 63, 90, 78, 63, - 83, 78, 137, 63, 138, 78, 63, 63, 131, 78, - 83, 131, 137, 63, 139, 78, 63, 137, 137, 63, - 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, - 82, 84, 64, 140, 141, 144, 82, 84, 64, 137, - 142, 64, 142, 145, 137, 137, 82, 84, 64, 82, - - 60, 64, 59, 82, 84, 64, 52, 82, 84, 64, - 140, 141, 144, 82, 84, 64, 51, 142, 64, 142, - 145, 146, 147, 82, 84, 64, 65, 111, 111, 111, - 65, 111, 115, 65, 115, 65, 65, 115, 149, 143, - 65, 143, 150, 115, 151, 65, 65, 47, 146, 147, - 115, 45, 143, 65, 111, 111, 111, 65, 111, 115, - 65, 115, 65, 65, 115, 149, 143, 65, 143, 150, - 115, 151, 65, 65, 66, 148, 153, 115, 148, 143, - 154, 66, 66, 155, 156, 66, 157, 122, 66, 122, - 159, 66, 158, 122, 66, 20, 158, 161, 19, 163, - - 122, 66, 148, 153, 122, 148, 11, 154, 66, 66, - 155, 156, 66, 157, 122, 66, 122, 159, 66, 158, - 122, 66, 69, 158, 161, 162, 163, 122, 69, 69, - 69, 122, 160, 165, 164, 69, 162, 160, 166, 167, - 69, 7, 168, 164, 169, 160, 170, 165, 4, 69, - 160, 164, 162, 172, 173, 69, 69, 69, 3, 160, - 165, 164, 69, 162, 160, 166, 167, 69, 74, 168, - 164, 169, 160, 170, 165, 74, 171, 160, 164, 174, - 172, 173, 74, 177, 176, 74, 0, 171, 74, 74, - 0, 176, 178, 175, 176, 74, 0, 0, 181, 179, - - 182, 183, 74, 171, 0, 179, 174, 0, 291, 74, - 177, 176, 74, 175, 171, 74, 74, 75, 176, 178, - 175, 176, 75, 180, 75, 181, 179, 182, 183, 293, - 75, 75, 179, 294, 75, 291, 180, 75, 75, 0, - 175, 0, 0, 0, 75, 0, 0, 0, 0, 75, - 180, 75, 0, 0, 0, 296, 293, 75, 75, 0, - 294, 75, 208, 180, 75, 75, 76, 208, 200, 208, - 201, 201, 200, 76, 208, 201, 298, 76, 200, 208, - 76, 201, 296, 76, 299, 300, 76, 0, 200, 208, - 301, 201, 0, 76, 208, 200, 208, 201, 201, 200, - - 76, 208, 201, 298, 76, 200, 208, 76, 201, 0, - 76, 299, 300, 76, 79, 200, 79, 301, 201, 79, - 79, 302, 79, 203, 79, 203, 79, 79, 0, 0, - 203, 203, 0, 0, 303, 203, 79, 0, 0, 0, - 0, 79, 0, 79, 0, 0, 79, 79, 302, 79, - 203, 79, 203, 79, 79, 202, 209, 203, 203, 202, - 209, 303, 203, 79, 80, 202, 209, 205, 80, 205, - 202, 80, 80, 205, 205, 202, 209, 305, 80, 205, - 306, 80, 202, 209, 307, 308, 202, 209, 80, 0, - 0, 80, 202, 209, 205, 80, 205, 202, 80, 80, - - 205, 205, 202, 209, 305, 80, 205, 306, 80, 0, - 0, 307, 308, 0, 0, 80, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 204, 206, - 304, 204, 304, 309, 310, 311, 312, 0, 206, 204, - 206, 204, 313, 314, 210, 206, 204, 304, 210, 315, - - 206, 204, 0, 0, 210, 204, 206, 304, 204, 304, - 309, 310, 311, 312, 210, 206, 204, 206, 204, 313, - 314, 210, 206, 204, 304, 210, 315, 206, 204, 207, - 207, 210, 211, 316, 211, 207, 0, 207, 317, 211, - 212, 210, 207, 207, 211, 319, 320, 207, 321, 322, - 0, 212, 323, 212, 0, 324, 207, 207, 212, 211, - 316, 211, 207, 212, 207, 317, 211, 212, 0, 207, - 207, 211, 319, 320, 207, 321, 322, 214, 212, 323, - 212, 214, 324, 325, 0, 212, 318, 214, 0, 0, - 212, 213, 213, 213, 0, 213, 215, 214, 213, 0, - - 215, 318, 327, 213, 214, 221, 215, 221, 214, 215, - 325, 216, 221, 318, 214, 216, 215, 221, 213, 213, - 213, 216, 213, 215, 214, 213, 216, 215, 318, 327, - 213, 216, 221, 215, 221, 328, 215, 0, 216, 221, - 0, 329, 216, 215, 221, 0, 0, 0, 216, 330, - 0, 0, 0, 216, 331, 0, 332, 333, 216, 217, - 0, 217, 328, 0, 217, 334, 335, 218, 329, 218, - 217, 0, 217, 218, 218, 0, 330, 217, 219, 218, - 219, 331, 217, 332, 333, 219, 217, 219, 217, 336, - 219, 217, 334, 335, 218, 337, 218, 217, 220, 217, - - 218, 218, 220, 337, 217, 219, 218, 219, 220, 217, - 338, 339, 219, 340, 219, 223, 336, 219, 220, 0, - 0, 341, 337, 227, 223, 220, 223, 227, 0, 220, - 337, 223, 225, 227, 225, 220, 223, 338, 339, 225, - 340, 342, 223, 227, 225, 220, 222, 222, 341, 0, - 227, 223, 343, 223, 227, 222, 0, 222, 223, 225, - 227, 225, 222, 223, 344, 345, 225, 222, 342, 346, - 227, 225, 347, 222, 222, 348, 226, 349, 226, 343, - 0, 0, 222, 226, 222, 0, 0, 0, 226, 222, - 0, 344, 345, 0, 222, 224, 346, 224, 0, 347, - - 0, 224, 348, 226, 349, 226, 350, 224, 224, 229, - 226, 352, 224, 229, 228, 226, 228, 224, 0, 229, - 228, 228, 224, 353, 224, 230, 228, 230, 224, 229, - 0, 355, 230, 350, 224, 224, 229, 230, 352, 224, - 229, 228, 356, 228, 224, 231, 229, 228, 228, 231, - 353, 0, 230, 228, 230, 231, 229, 232, 355, 230, - 357, 232, 358, 351, 230, 231, 360, 232, 233, 356, - 233, 361, 231, 351, 362, 233, 231, 232, 233, 234, - 233, 234, 231, 0, 232, 0, 234, 357, 232, 358, - 351, 234, 231, 360, 232, 233, 363, 233, 361, 364, - - 351, 362, 233, 0, 232, 233, 234, 233, 234, 236, - 235, 236, 235, 234, 366, 359, 236, 235, 234, 235, - 237, 236, 235, 363, 237, 359, 364, 0, 0, 0, - 237, 0, 0, 0, 0, 367, 236, 235, 236, 235, - 237, 366, 359, 236, 235, 368, 235, 237, 236, 235, - 238, 237, 359, 369, 238, 241, 240, 237, 240, 241, - 238, 238, 367, 240, 370, 241, 371, 237, 240, 372, - 238, 0, 368, 0, 242, 241, 0, 238, 242, 0, - 369, 238, 241, 240, 242, 240, 241, 238, 238, 0, - 240, 370, 241, 371, 242, 240, 372, 238, 239, 243, - - 243, 242, 241, 243, 373, 242, 239, 374, 239, 243, - 246, 242, 246, 239, 239, 0, 246, 246, 239, 243, - 0, 242, 246, 373, 0, 239, 243, 243, 0, 0, - 243, 373, 0, 239, 374, 239, 243, 246, 257, 246, - 239, 239, 257, 246, 246, 239, 243, 244, 257, 246, - 373, 244, 247, 244, 247, 244, 260, 244, 257, 247, - 260, 376, 377, 0, 247, 257, 260, 244, 0, 257, - 0, 0, 378, 0, 244, 257, 260, 375, 244, 247, - 244, 247, 244, 260, 244, 257, 247, 260, 376, 377, - 375, 247, 0, 260, 244, 245, 379, 245, 248, 378, - - 248, 380, 381, 260, 375, 248, 245, 249, 245, 249, - 248, 382, 383, 245, 249, 249, 384, 375, 245, 249, - 0, 385, 245, 379, 245, 248, 386, 248, 380, 381, - 0, 0, 248, 245, 249, 245, 249, 248, 382, 383, - 245, 249, 249, 384, 0, 245, 249, 250, 385, 250, - 251, 0, 251, 386, 250, 250, 0, 251, 250, 250, - 252, 0, 251, 254, 387, 254, 389, 0, 390, 0, - 254, 252, 0, 252, 250, 254, 250, 251, 252, 251, - 0, 250, 250, 252, 251, 250, 250, 252, 253, 251, - 254, 387, 254, 389, 253, 390, 253, 254, 252, 255, - - 252, 253, 254, 0, 391, 252, 253, 255, 0, 255, - 252, 0, 0, 392, 255, 253, 393, 394, 0, 255, - 395, 253, 0, 253, 0, 396, 255, 397, 253, 0, - 256, 391, 256, 253, 255, 258, 255, 256, 256, 258, - 392, 255, 256, 393, 394, 258, 255, 395, 258, 261, - 0, 261, 396, 398, 397, 258, 261, 256, 399, 256, - 0, 261, 258, 259, 256, 256, 258, 259, 401, 256, - 403, 259, 258, 0, 263, 258, 261, 259, 261, 263, - 398, 263, 258, 261, 405, 399, 263, 259, 261, 0, - 259, 263, 0, 0, 259, 401, 0, 403, 259, 0, - - 402, 263, 0, 0, 259, 264, 263, 264, 263, 402, - 0, 405, 264, 263, 259, 262, 264, 264, 263, 265, - 262, 406, 407, 265, 0, 265, 262, 402, 262, 404, - 265, 404, 264, 262, 264, 265, 402, 267, 262, 264, - 408, 267, 262, 264, 264, 267, 265, 262, 406, 407, - 265, 267, 265, 262, 0, 262, 404, 265, 404, 268, - 262, 267, 265, 268, 267, 262, 266, 408, 267, 268, - 409, 410, 267, 411, 413, 266, 0, 266, 267, 268, - 0, 269, 266, 266, 0, 269, 268, 266, 267, 269, - 268, 0, 0, 266, 0, 269, 268, 409, 410, 412, - - 411, 413, 266, 412, 266, 269, 268, 270, 269, 266, - 266, 270, 269, 414, 266, 271, 269, 270, 272, 271, - 270, 272, 269, 271, 544, 272, 412, 270, 545, 271, - 412, 272, 269, 0, 270, 0, 546, 547, 270, 271, - 414, 272, 271, 548, 270, 272, 271, 270, 272, 274, - 271, 544, 272, 274, 270, 545, 271, 0, 272, 274, - 273, 273, 273, 546, 547, 549, 271, 273, 272, 274, - 548, 275, 273, 276, 550, 275, 274, 276, 0, 275, - 274, 275, 551, 276, 276, 0, 274, 273, 273, 273, - 0, 275, 549, 276, 273, 0, 274, 552, 275, 273, - - 276, 550, 275, 280, 276, 277, 275, 280, 275, 551, - 276, 276, 277, 280, 554, 557, 279, 279, 275, 277, - 276, 279, 277, 280, 552, 277, 0, 279, 0, 0, - 280, 558, 277, 0, 280, 0, 0, 279, 0, 277, - 280, 554, 557, 279, 279, 559, 277, 560, 279, 277, - 280, 0, 277, 278, 279, 281, 278, 281, 558, 562, - 278, 281, 281, 278, 279, 282, 278, 281, 0, 282, - 563, 564, 559, 0, 560, 282, 278, 0, 282, 565, - 278, 567, 281, 278, 281, 282, 562, 278, 281, 281, - 278, 283, 282, 278, 281, 283, 282, 563, 564, 0, - - 284, 283, 282, 278, 284, 282, 565, 568, 567, 285, - 284, 283, 282, 285, 422, 284, 422, 285, 283, 569, - 284, 422, 283, 285, 570, 571, 422, 284, 283, 572, - 573, 284, 574, 285, 568, 0, 285, 284, 283, 0, - 285, 422, 284, 422, 285, 0, 569, 284, 422, 0, - 285, 570, 571, 422, 0, 0, 572, 573, 0, 574, - 285, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 417, 417, 417, 417, 417, 417, 417, 417, 417, - 417, 418, 419, 420, 421, 418, 419, 420, 421, 575, - 578, 418, 419, 420, 421, 0, 579, 580, 0, 581, - - 0, 418, 419, 420, 421, 0, 0, 0, 418, 419, - 420, 421, 418, 419, 420, 421, 575, 578, 418, 419, - 420, 421, 424, 579, 580, 423, 581, 423, 418, 419, - 420, 421, 423, 424, 425, 424, 425, 423, 426, 0, - 424, 425, 426, 0, 582, 424, 425, 0, 426, 424, - 583, 0, 423, 584, 423, 585, 0, 0, 426, 423, - 424, 425, 424, 425, 423, 426, 427, 424, 425, 426, - 427, 582, 424, 425, 428, 426, 427, 583, 428, 429, - 584, 587, 585, 429, 428, 426, 427, 0, 430, 429, - 430, 588, 428, 427, 428, 430, 589, 427, 590, 429, - - 430, 428, 431, 427, 431, 428, 429, 593, 587, 431, - 429, 428, 594, 427, 431, 430, 429, 430, 588, 428, - 433, 428, 430, 589, 433, 590, 429, 430, 0, 431, - 433, 431, 0, 433, 593, 0, 431, 0, 0, 594, - 433, 431, 432, 0, 432, 434, 596, 433, 432, 434, - 598, 433, 599, 0, 432, 434, 600, 433, 435, 432, - 433, 434, 435, 0, 432, 434, 435, 433, 435, 432, - 437, 432, 434, 596, 437, 432, 434, 598, 435, 599, - 437, 432, 434, 600, 0, 435, 432, 0, 434, 435, - 437, 432, 434, 435, 436, 435, 0, 437, 436, 0, - - 601, 437, 438, 602, 436, 435, 438, 437, 603, 436, - 438, 439, 0, 439, 436, 0, 438, 437, 439, 606, - 0, 436, 0, 439, 0, 436, 438, 601, 604, 438, - 602, 436, 610, 438, 612, 603, 436, 438, 439, 604, - 439, 436, 440, 438, 440, 439, 606, 441, 440, 440, - 439, 441, 613, 438, 440, 604, 442, 441, 442, 610, - 615, 612, 617, 442, 618, 0, 604, 441, 442, 440, - 443, 440, 443, 0, 441, 440, 440, 443, 441, 613, - 0, 440, 443, 442, 441, 442, 0, 615, 444, 617, - 442, 618, 444, 619, 441, 442, 0, 443, 444, 443, - - 616, 616, 445, 446, 443, 621, 445, 446, 444, 443, - 445, 0, 622, 446, 623, 444, 445, 624, 446, 444, - 619, 0, 626, 446, 0, 444, 445, 616, 616, 445, - 446, 0, 621, 445, 446, 444, 447, 445, 447, 622, - 446, 623, 447, 445, 624, 446, 627, 448, 447, 626, - 446, 448, 0, 445, 629, 0, 449, 448, 447, 0, - 449, 630, 631, 447, 632, 447, 449, 448, 0, 447, - 0, 449, 0, 627, 448, 447, 449, 0, 448, 450, - 0, 629, 450, 449, 448, 447, 450, 449, 630, 631, - 0, 632, 450, 449, 448, 452, 634, 451, 449, 452, - - 453, 451, 450, 449, 453, 452, 450, 451, 451, 450, - 453, 635, 636, 450, 0, 452, 637, 451, 0, 450, - 453, 638, 452, 634, 451, 640, 452, 453, 451, 450, - 641, 453, 452, 0, 451, 451, 454, 453, 635, 636, - 454, 455, 452, 637, 451, 455, 454, 453, 638, 455, - 456, 0, 640, 0, 456, 455, 454, 641, 642, 458, - 456, 458, 459, 454, 459, 455, 458, 454, 455, 459, - 456, 458, 455, 454, 459, 0, 455, 456, 457, 0, - 457, 456, 455, 454, 457, 642, 458, 456, 458, 459, - 457, 459, 455, 458, 643, 646, 459, 456, 458, 0, - - 457, 459, 460, 647, 460, 457, 462, 457, 460, 460, - 462, 457, 648, 461, 460, 461, 462, 457, 649, 650, - 461, 643, 646, 653, 463, 461, 462, 457, 463, 460, - 647, 460, 463, 462, 0, 460, 460, 462, 463, 648, - 461, 460, 461, 462, 654, 649, 650, 461, 463, 656, - 653, 463, 461, 462, 464, 463, 464, 657, 658, 463, - 465, 464, 0, 659, 465, 463, 464, 660, 465, 466, - 465, 654, 661, 466, 0, 463, 656, 466, 662, 466, - 465, 464, 663, 464, 657, 658, 0, 465, 464, 466, - 659, 465, 0, 464, 660, 465, 466, 465, 0, 661, - - 466, 467, 468, 467, 466, 662, 466, 465, 467, 663, - 0, 664, 468, 467, 468, 666, 466, 0, 668, 468, - 0, 0, 670, 0, 468, 469, 0, 469, 467, 468, - 467, 0, 469, 0, 469, 467, 0, 469, 664, 468, - 467, 468, 666, 471, 470, 668, 468, 471, 470, 670, - 470, 468, 469, 471, 469, 470, 802, 0, 472, 469, - 470, 469, 472, 471, 469, 0, 804, 0, 472, 0, - 471, 470, 806, 472, 471, 470, 807, 470, 472, 0, - 471, 808, 470, 802, 473, 472, 809, 470, 473, 472, - 471, 0, 474, 804, 473, 472, 474, 473, 474, 806, - - 472, 0, 474, 807, 473, 472, 475, 0, 808, 0, - 475, 473, 474, 809, 810, 473, 475, 0, 476, 474, - 811, 473, 476, 474, 473, 474, 475, 0, 476, 474, - 477, 473, 478, 475, 477, 812, 478, 475, 476, 474, - 477, 810, 478, 475, 479, 476, 813, 811, 479, 476, - 477, 0, 478, 475, 479, 476, 480, 477, 0, 478, - 480, 477, 812, 478, 479, 476, 480, 477, 814, 478, - 816, 479, 480, 813, 817, 479, 480, 477, 481, 478, - 481, 479, 482, 480, 482, 481, 0, 480, 818, 482, - 481, 479, 0, 480, 482, 814, 0, 816, 819, 480, - - 484, 817, 0, 480, 484, 481, 483, 481, 483, 482, - 484, 482, 481, 483, 483, 818, 482, 481, 483, 485, - 484, 482, 488, 485, 488, 819, 488, 484, 820, 485, - 0, 484, 488, 483, 0, 483, 821, 484, 823, 485, - 483, 483, 488, 486, 486, 483, 485, 484, 486, 488, - 485, 488, 824, 488, 486, 820, 485, 491, 489, 488, - 489, 491, 489, 821, 486, 823, 485, 491, 489, 488, - 486, 486, 491, 0, 825, 486, 0, 491, 489, 824, - 826, 486, 0, 827, 491, 489, 0, 489, 491, 489, - 828, 486, 487, 490, 491, 489, 487, 490, 0, 491, - - 487, 825, 487, 490, 491, 489, 487, 826, 829, 490, - 827, 0, 830, 490, 0, 0, 487, 828, 492, 487, - 490, 493, 492, 487, 490, 493, 831, 487, 492, 487, - 490, 493, 832, 487, 492, 829, 490, 833, 492, 830, - 490, 493, 494, 487, 836, 492, 494, 0, 493, 492, - 494, 837, 493, 831, 0, 492, 494, 838, 493, 832, - 495, 492, 495, 0, 833, 492, 494, 495, 493, 494, - 839, 836, 495, 494, 496, 0, 496, 494, 837, 0, - 496, 496, 840, 494, 838, 0, 496, 495, 497, 495, - 497, 841, 498, 494, 495, 497, 498, 839, 0, 495, - - 497, 496, 498, 496, 0, 844, 499, 496, 496, 840, - 499, 847, 498, 496, 0, 497, 499, 497, 841, 498, - 0, 500, 497, 498, 848, 500, 499, 497, 502, 498, - 502, 500, 844, 499, 500, 502, 0, 499, 847, 498, - 502, 500, 0, 499, 850, 853, 0, 506, 500, 506, - 0, 848, 500, 499, 506, 502, 0, 502, 500, 506, - 856, 500, 502, 504, 504, 504, 0, 502, 500, 501, - 504, 850, 853, 501, 506, 504, 506, 501, 857, 0, - 858, 506, 849, 501, 859, 849, 506, 856, 501, 860, - 504, 504, 504, 501, 0, 861, 501, 504, 864, 865, - - 501, 505, 504, 0, 501, 857, 505, 858, 505, 849, - 501, 859, 849, 505, 866, 501, 860, 867, 505, 507, - 501, 503, 861, 507, 868, 864, 865, 0, 505, 507, - 503, 0, 503, 505, 503, 505, 870, 503, 871, 507, - 505, 866, 503, 0, 867, 505, 507, 0, 503, 872, - 507, 868, 874, 0, 508, 0, 507, 503, 508, 503, - 0, 503, 508, 870, 503, 871, 507, 509, 508, 503, - 510, 509, 875, 510, 510, 0, 872, 509, 508, 874, - 510, 508, 509, 0, 511, 508, 511, 509, 0, 508, - 510, 511, 876, 0, 509, 508, 511, 510, 509, 875, - - 510, 510, 513, 0, 509, 508, 513, 510, 512, 509, - 512, 511, 513, 511, 509, 512, 877, 510, 511, 876, - 512, 514, 513, 511, 515, 514, 516, 879, 515, 513, - 516, 514, 880, 513, 515, 512, 516, 512, 520, 513, - 520, 514, 512, 877, 515, 520, 516, 512, 514, 513, - 520, 515, 514, 516, 879, 515, 517, 516, 514, 880, - 517, 515, 881, 516, 882, 520, 517, 520, 514, 517, - 518, 515, 520, 516, 518, 519, 517, 520, 883, 519, - 518, 884, 885, 517, 886, 519, 519, 517, 518, 881, - 518, 882, 521, 517, 521, 519, 517, 518, 887, 521, - - 521, 518, 519, 517, 521, 883, 519, 518, 884, 885, - 0, 886, 519, 519, 0, 518, 522, 518, 522, 521, - 889, 521, 519, 522, 522, 887, 521, 521, 522, 890, - 523, 521, 523, 891, 524, 893, 524, 523, 524, 894, - 895, 524, 523, 522, 998, 522, 524, 889, 0, 0, - 522, 522, 0, 0, 0, 522, 890, 523, 0, 523, - 891, 524, 893, 524, 523, 524, 894, 895, 524, 523, - 525, 998, 525, 524, 526, 527, 526, 525, 525, 527, - 528, 526, 525, 1000, 528, 527, 526, 0, 1002, 0, - 528, 1003, 1004, 1005, 0, 527, 0, 525, 1007, 525, - - 528, 526, 527, 526, 525, 525, 527, 528, 526, 525, - 1000, 528, 527, 526, 529, 1002, 529, 528, 1003, 1004, - 1005, 529, 527, 530, 531, 1007, 529, 528, 531, 0, - 530, 1009, 530, 0, 531, 1010, 1011, 530, 1012, 0, - 1013, 529, 530, 529, 531, 1015, 1017, 0, 529, 0, - 530, 531, 0, 529, 1019, 531, 532, 530, 1009, 530, - 532, 531, 1010, 1011, 530, 1012, 532, 1013, 532, 530, - 533, 531, 1015, 1017, 533, 0, 532, 535, 534, 535, - 533, 1019, 534, 532, 535, 0, 534, 532, 1022, 535, - 533, 0, 534, 532, 0, 532, 0, 533, 0, 0, - - 0, 533, 534, 532, 535, 534, 535, 533, 0, 534, - 1024, 535, 537, 534, 1025, 1022, 535, 533, 536, 534, - 536, 537, 1026, 537, 538, 536, 538, 536, 537, 534, - 536, 538, 0, 537, 0, 538, 538, 1024, 1027, 537, - 0, 1025, 1034, 0, 0, 536, 0, 536, 537, 1026, - 537, 538, 536, 538, 536, 537, 1035, 536, 538, 539, - 537, 539, 538, 538, 1036, 1027, 539, 539, 540, 1034, - 540, 539, 1039, 541, 540, 540, 0, 541, 0, 541, - 540, 1041, 0, 1035, 541, 0, 539, 0, 539, 541, - 1043, 1036, 0, 539, 539, 540, 0, 540, 539, 1039, - - 541, 540, 540, 542, 541, 542, 541, 540, 1041, 542, - 542, 541, 672, 1045, 672, 542, 541, 1043, 672, 672, - 0, 673, 1046, 673, 672, 0, 0, 673, 673, 0, - 542, 1047, 542, 673, 0, 0, 542, 542, 0, 672, - 1045, 672, 542, 674, 0, 672, 672, 674, 673, 1046, - 673, 672, 675, 674, 673, 673, 675, 1048, 1047, 677, - 673, 677, 675, 674, 1049, 676, 677, 1050, 1052, 676, - 674, 677, 675, 1053, 674, 676, 0, 678, 676, 675, - 674, 678, 0, 675, 1048, 676, 677, 678, 677, 675, - 674, 1049, 676, 677, 1050, 1052, 676, 678, 677, 675, - - 1053, 1054, 676, 680, 678, 676, 0, 680, 678, 679, - 0, 679, 676, 680, 678, 681, 679, 1055, 0, 681, - 0, 679, 0, 680, 678, 681, 1057, 1059, 1054, 1061, - 680, 1062, 0, 682, 680, 681, 679, 682, 679, 1063, - 680, 682, 681, 679, 1055, 683, 681, 682, 679, 683, - 680, 1064, 681, 1057, 1059, 683, 1061, 682, 1062, 684, - 682, 1065, 681, 684, 682, 683, 1063, 685, 682, 684, - 0, 685, 683, 1070, 682, 685, 683, 1071, 1064, 684, - 0, 685, 683, 1152, 682, 686, 684, 1156, 1065, 686, - 684, 685, 683, 686, 685, 686, 684, 687, 685, 1157, - - 1070, 687, 685, 1160, 1071, 686, 684, 687, 685, 0, - 1152, 689, 686, 0, 1156, 689, 686, 687, 685, 0, - 686, 689, 686, 688, 687, 690, 1157, 688, 687, 690, - 1160, 689, 686, 688, 687, 690, 688, 1161, 689, 691, - 690, 691, 689, 688, 687, 690, 691, 1162, 689, 692, - 688, 691, 690, 692, 688, 0, 690, 0, 689, 692, - 688, 694, 690, 688, 1161, 694, 691, 690, 691, 692, - 688, 694, 690, 691, 1162, 693, 692, 0, 691, 693, - 692, 694, 695, 0, 695, 693, 692, 702, 694, 695, - 693, 702, 694, 1166, 695, 693, 692, 702, 694, 0, - - 1169, 0, 693, 696, 696, 696, 693, 702, 694, 695, - 696, 695, 693, 1170, 702, 696, 695, 693, 702, 0, - 1166, 695, 693, 1173, 702, 1174, 697, 1169, 697, 1175, - 696, 696, 696, 697, 702, 697, 1176, 696, 697, 698, - 1170, 698, 696, 1179, 0, 1180, 698, 698, 1181, 0, - 1173, 698, 1174, 697, 0, 697, 1175, 0, 699, 0, - 697, 1184, 697, 1176, 1186, 697, 698, 1187, 698, 699, - 1179, 699, 1180, 698, 698, 1181, 699, 700, 698, 700, - 0, 699, 1188, 700, 700, 699, 701, 1189, 1184, 700, - 1190, 1186, 0, 0, 1187, 701, 699, 701, 699, 0, - - 1240, 1243, 701, 699, 700, 1247, 700, 701, 699, 1188, - 700, 700, 0, 701, 1189, 1248, 700, 1190, 703, 704, - 703, 704, 701, 1251, 701, 703, 704, 1240, 1243, 701, - 703, 704, 1247, 1252, 701, 1241, 1241, 705, 0, 705, - 1253, 1254, 1248, 0, 705, 703, 704, 703, 704, 705, - 1251, 1258, 703, 704, 0, 706, 1259, 703, 704, 1260, - 1252, 1262, 0, 706, 705, 706, 705, 1253, 1254, 1289, - 706, 705, 1290, 1241, 1293, 706, 705, 707, 1258, 707, - 0, 707, 706, 1259, 707, 0, 1260, 0, 1262, 707, - 706, 708, 706, 708, 0, 708, 1289, 706, 708, 1290, - - 1241, 1293, 706, 708, 707, 709, 707, 709, 707, 1296, - 0, 707, 709, 1299, 709, 0, 707, 709, 708, 710, - 708, 710, 708, 0, 711, 708, 710, 710, 0, 1303, - 708, 710, 709, 0, 709, 711, 1296, 711, 0, 709, - 1299, 709, 711, 1317, 709, 713, 710, 711, 710, 713, - 712, 711, 0, 710, 710, 713, 1303, 1321, 710, 1316, - 1316, 712, 711, 712, 711, 713, 0, 0, 712, 711, - 1317, 714, 713, 712, 711, 714, 713, 712, 0, 715, - 1324, 714, 713, 715, 1321, 1330, 0, 1334, 712, 715, - 712, 714, 713, 716, 715, 712, 0, 716, 714, 715, - - 712, 1316, 714, 716, 0, 717, 715, 1324, 714, 717, - 715, 1338, 1330, 716, 1334, 717, 715, 1340, 714, 718, - 716, 715, 0, 718, 716, 717, 715, 718, 1316, 1342, - 716, 719, 717, 718, 0, 719, 717, 1344, 1338, 1346, - 716, 719, 717, 718, 1340, 720, 718, 1348, 0, 720, - 718, 719, 717, 721, 718, 720, 1342, 721, 719, 0, - 718, 721, 719, 1350, 1344, 720, 1346, 721, 719, 0, - 718, 1352, 720, 0, 1348, 722, 720, 721, 719, 722, - 721, 1354, 720, 723, 721, 722, 722, 723, 721, 724, - 1350, 724, 720, 723, 721, 722, 724, 0, 1352, 1323, - - 1323, 724, 722, 723, 721, 0, 722, 1356, 1354, 0, - 723, 727, 722, 722, 723, 727, 724, 725, 724, 725, - 723, 727, 722, 724, 725, 726, 0, 726, 724, 725, - 723, 727, 726, 729, 1356, 729, 0, 726, 727, 0, - 729, 1323, 727, 0, 725, 729, 725, 0, 727, 0, - 0, 725, 726, 728, 726, 0, 725, 728, 727, 726, - 729, 0, 729, 728, 726, 0, 728, 729, 1323, 730, - 0, 730, 729, 728, 0, 730, 730, 0, 0, 0, - 728, 730, 1265, 1265, 728, 731, 0, 731, 0, 0, - 728, 731, 731, 728, 0, 0, 730, 731, 730, 733, - - 728, 733, 730, 730, 0, 0, 733, 0, 730, 0, - 0, 733, 731, 0, 731, 0, 0, 0, 731, 731, - 1265, 0, 0, 0, 731, 732, 733, 734, 733, 734, - 732, 0, 732, 733, 734, 0, 732, 732, 733, 734, - 0, 735, 732, 735, 0, 0, 0, 1265, 735, 0, - 0, 0, 732, 735, 734, 0, 734, 732, 0, 732, - 736, 734, 736, 732, 732, 0, 734, 736, 735, 732, - 735, 737, 736, 737, 738, 735, 738, 0, 737, 0, - 735, 738, 738, 737, 0, 0, 738, 736, 0, 736, - 739, 0, 739, 0, 736, 0, 0, 739, 737, 736, - - 737, 738, 739, 738, 740, 737, 740, 0, 738, 738, - 737, 740, 0, 738, 0, 0, 740, 739, 0, 739, - 0, 0, 741, 0, 739, 0, 741, 0, 0, 739, - 742, 740, 741, 740, 742, 743, 0, 0, 740, 743, - 742, 0, 741, 740, 744, 743, 744, 0, 0, 741, - 742, 744, 744, 741, 745, 743, 744, 742, 745, 741, - 745, 742, 743, 0, 0, 745, 743, 742, 0, 741, - 745, 744, 743, 744, 0, 0, 0, 742, 744, 744, - 0, 745, 743, 744, 746, 745, 746, 745, 0, 747, - 746, 746, 745, 747, 748, 0, 746, 745, 748, 747, - - 749, 0, 749, 769, 748, 769, 749, 0, 0, 747, - 769, 746, 749, 746, 748, 769, 747, 746, 746, 0, - 747, 748, 749, 746, 750, 748, 747, 749, 750, 749, - 769, 748, 769, 749, 750, 0, 747, 769, 0, 749, - 0, 748, 769, 751, 750, 0, 0, 751, 0, 749, - 0, 750, 0, 751, 0, 750, 751, 774, 0, 774, - 0, 750, 752, 751, 774, 0, 752, 0, 0, 774, - 751, 750, 752, 0, 751, 752, 0, 753, 0, 0, - 751, 753, 752, 751, 774, 0, 774, 753, 0, 752, - 751, 774, 0, 752, 0, 0, 774, 753, 0, 752, - - 0, 0, 752, 754, 753, 0, 755, 754, 753, 752, - 755, 754, 0, 754, 753, 756, 755, 0, 0, 756, - 0, 0, 0, 754, 753, 756, 755, 0, 0, 0, - 754, 0, 0, 755, 754, 756, 0, 755, 754, 0, - 754, 757, 756, 755, 0, 757, 756, 0, 0, 0, - 754, 757, 756, 755, 0, 758, 759, 0, 0, 758, - 759, 757, 756, 758, 759, 0, 0, 0, 757, 758, - 759, 0, 757, 0, 0, 0, 0, 0, 757, 758, - 759, 0, 758, 759, 0, 760, 758, 759, 757, 760, - 758, 759, 0, 0, 761, 760, 758, 759, 761, 0, - - 0, 0, 0, 0, 761, 760, 758, 759, 0, 0, - 0, 0, 760, 762, 761, 0, 760, 762, 0, 0, - 0, 761, 760, 762, 0, 761, 762, 0, 0, 0, - 0, 761, 760, 762, 0, 763, 0, 0, 764, 763, - 762, 761, 764, 763, 762, 763, 0, 0, 764, 0, - 762, 764, 0, 762, 0, 763, 0, 0, 764, 0, - 762, 0, 763, 0, 765, 764, 763, 767, 765, 764, - 763, 767, 763, 766, 765, 764, 766, 767, 764, 765, - 766, 0, 763, 0, 765, 764, 766, 767, 0, 768, - 0, 765, 0, 768, 767, 765, 766, 768, 767, 768, - - 766, 765, 0, 766, 767, 0, 765, 766, 0, 768, - 0, 765, 0, 766, 767, 771, 768, 0, 770, 771, - 768, 0, 0, 766, 768, 771, 768, 770, 772, 770, - 0, 0, 772, 773, 770, 771, 768, 773, 772, 770, - 0, 0, 771, 773, 0, 770, 771, 775, 772, 0, - 0, 775, 771, 773, 770, 772, 770, 775, 0, 772, - 773, 770, 771, 0, 773, 772, 770, 775, 0, 776, - 773, 0, 777, 776, 775, 772, 777, 778, 775, 776, - 773, 778, 777, 0, 775, 0, 0, 778, 0, 776, - 0, 779, 777, 0, 775, 779, 776, 778, 0, 777, - - 776, 779, 0, 777, 778, 0, 776, 0, 778, 777, - 0, 779, 0, 780, 778, 0, 776, 780, 779, 777, - 0, 0, 779, 780, 778, 781, 0, 781, 779, 782, - 0, 782, 781, 780, 0, 0, 782, 781, 779, 0, - 780, 782, 0, 0, 780, 0, 0, 0, 0, 0, - 780, 0, 781, 0, 781, 783, 782, 783, 782, 781, - 780, 0, 783, 782, 781, 784, 0, 783, 782, 0, - 0, 785, 0, 785, 784, 791, 784, 0, 785, 791, - 785, 784, 783, 785, 783, 791, 784, 0, 0, 783, - 0, 0, 784, 0, 783, 791, 0, 786, 785, 786, - - 785, 784, 791, 784, 786, 785, 791, 785, 784, 786, - 785, 0, 791, 784, 0, 0, 787, 0, 787, 788, - 0, 0, 791, 787, 786, 787, 786, 789, 787, 789, - 788, 786, 788, 0, 789, 789, 786, 788, 0, 789, - 0, 0, 788, 787, 0, 787, 788, 0, 0, 0, - 787, 0, 787, 790, 789, 787, 789, 788, 790, 788, - 790, 789, 789, 793, 788, 790, 789, 793, 792, 788, - 790, 792, 792, 793, 0, 0, 0, 0, 792, 0, - 790, 0, 0, 793, 0, 790, 0, 790, 792, 0, - 793, 0, 790, 0, 793, 792, 0, 790, 792, 792, - - 793, 0, 794, 795, 796, 792, 794, 795, 796, 0, - 793, 0, 794, 795, 796, 792, 797, 0, 794, 0, - 797, 0, 794, 795, 796, 798, 797, 798, 0, 794, - 795, 796, 798, 794, 795, 796, 797, 798, 0, 794, - 795, 796, 0, 797, 0, 794, 0, 797, 0, 794, - 795, 796, 798, 797, 798, 899, 0, 899, 900, 798, - 900, 0, 899, 797, 798, 900, 901, 899, 901, 902, - 900, 902, 0, 901, 0, 0, 902, 0, 901, 0, - 901, 902, 899, 0, 899, 900, 0, 900, 0, 899, - 0, 0, 900, 901, 899, 901, 902, 900, 902, 0, - - 901, 0, 903, 902, 0, 901, 903, 901, 902, 0, - 904, 905, 903, 0, 904, 905, 0, 0, 0, 0, - 904, 905, 903, 0, 0, 0, 0, 0, 0, 903, - 904, 905, 0, 903, 0, 0, 906, 904, 905, 903, - 906, 904, 905, 0, 0, 0, 906, 904, 905, 903, - 0, 906, 0, 0, 908, 908, 906, 904, 905, 908, - 907, 0, 0, 906, 907, 908, 0, 906, 907, 0, - 0, 0, 0, 906, 907, 908, 0, 0, 906, 0, - 0, 908, 908, 906, 907, 0, 908, 907, 909, 0, - 909, 907, 908, 0, 909, 907, 910, 911, 910, 911, - - 909, 907, 908, 910, 911, 911, 0, 0, 910, 911, - 909, 907, 0, 0, 0, 909, 0, 909, 912, 0, - 0, 909, 912, 910, 911, 910, 911, 909, 912, 0, - 910, 911, 911, 0, 0, 910, 911, 909, 912, 0, - 913, 915, 914, 915, 913, 912, 914, 0, 915, 912, - 913, 0, 914, 915, 916, 912, 0, 0, 916, 0, - 913, 0, 914, 0, 916, 912, 0, 913, 915, 914, - 915, 913, 917, 914, 916, 915, 917, 913, 0, 914, - 915, 916, 917, 0, 0, 916, 918, 913, 0, 914, - 918, 916, 917, 0, 918, 919, 0, 919, 0, 917, - - 918, 916, 919, 917, 0, 0, 0, 919, 920, 917, - 918, 0, 920, 918, 0, 0, 921, 918, 920, 917, - 921, 918, 919, 0, 919, 0, 921, 918, 920, 919, - 0, 0, 0, 0, 919, 920, 921, 918, 922, 920, - 0, 0, 922, 921, 0, 920, 923, 921, 922, 0, - 923, 0, 924, 921, 924, 920, 923, 0, 922, 924, - 0, 923, 0, 921, 924, 922, 923, 0, 0, 922, - 925, 0, 926, 923, 925, 922, 926, 923, 0, 924, - 925, 924, 926, 923, 0, 922, 924, 0, 923, 0, - 925, 924, 926, 923, 927, 0, 928, 925, 927, 926, - - 928, 925, 0, 926, 927, 0, 928, 925, 0, 926, - 0, 928, 0, 0, 927, 0, 928, 925, 0, 926, - 929, 927, 0, 928, 929, 927, 0, 928, 0, 0, - 929, 927, 930, 928, 930, 929, 0, 0, 928, 930, - 929, 927, 0, 928, 930, 931, 932, 929, 932, 931, - 933, 929, 932, 0, 933, 931, 0, 929, 932, 930, - 933, 930, 929, 0, 0, 931, 930, 929, 932, 0, - 933, 930, 931, 932, 934, 932, 931, 933, 934, 932, - 0, 933, 931, 0, 934, 932, 935, 933, 0, 936, - 935, 936, 931, 936, 934, 932, 935, 933, 0, 936, - - 938, 934, 938, 0, 935, 934, 935, 938, 0, 936, - 0, 934, 938, 935, 0, 937, 936, 935, 936, 937, - 936, 934, 0, 935, 0, 937, 936, 938, 0, 938, - 937, 935, 0, 935, 938, 937, 936, 0, 939, 938, - 939, 941, 937, 941, 940, 939, 937, 0, 941, 940, - 939, 940, 937, 941, 0, 0, 940, 937, 0, 0, - 0, 940, 937, 0, 0, 939, 0, 939, 941, 0, - 941, 940, 939, 0, 0, 941, 940, 939, 940, 942, - 941, 942, 943, 940, 943, 944, 942, 944, 940, 943, - 943, 942, 944, 945, 943, 945, 0, 944, 0, 0, - - 945, 0, 0, 0, 0, 945, 942, 0, 942, 943, - 0, 943, 944, 942, 944, 0, 943, 943, 942, 944, - 945, 943, 945, 946, 944, 946, 0, 945, 0, 947, - 946, 946, 945, 947, 948, 946, 948, 0, 0, 947, - 0, 948, 0, 0, 948, 0, 948, 0, 0, 947, - 946, 0, 946, 0, 0, 0, 947, 946, 946, 0, - 947, 948, 946, 948, 0, 949, 947, 949, 948, 0, - 0, 948, 949, 948, 0, 0, 947, 949, 950, 951, - 950, 951, 0, 0, 0, 950, 951, 0, 0, 0, - 950, 951, 949, 0, 949, 0, 0, 0, 0, 949, - - 0, 952, 0, 0, 949, 950, 951, 950, 951, 952, - 0, 952, 950, 951, 0, 0, 952, 950, 951, 0, - 953, 952, 953, 954, 0, 954, 0, 953, 952, 0, - 954, 0, 953, 0, 0, 954, 952, 0, 952, 0, - 0, 955, 0, 952, 0, 955, 0, 953, 952, 953, - 954, 955, 954, 956, 953, 956, 957, 954, 0, 953, - 956, 955, 954, 0, 0, 956, 0, 957, 955, 957, - 0, 0, 955, 0, 957, 0, 0, 0, 955, 957, - 956, 0, 956, 957, 0, 0, 0, 956, 955, 0, - 0, 958, 956, 958, 957, 0, 957, 0, 958, 958, - - 960, 957, 960, 958, 0, 959, 957, 960, 960, 959, - 0, 959, 960, 0, 0, 0, 959, 0, 958, 0, - 958, 959, 0, 0, 0, 958, 958, 960, 0, 960, - 958, 0, 959, 0, 960, 960, 959, 0, 959, 960, - 961, 0, 961, 959, 962, 963, 962, 961, 959, 963, - 0, 962, 961, 0, 0, 963, 962, 0, 0, 0, - 964, 0, 0, 0, 964, 963, 0, 961, 0, 961, - 964, 962, 963, 962, 961, 964, 963, 0, 962, 961, - 964, 0, 963, 962, 965, 965, 966, 964, 0, 965, - 966, 964, 963, 0, 0, 965, 966, 964, 0, 966, - - 0, 0, 964, 0, 0, 965, 966, 964, 0, 0, - 0, 965, 965, 966, 967, 968, 965, 966, 967, 968, - 0, 0, 965, 966, 967, 968, 966, 967, 0, 0, - 0, 0, 965, 966, 967, 968, 0, 0, 0, 969, - 970, 967, 968, 969, 970, 967, 968, 0, 0, 969, - 970, 967, 968, 971, 967, 0, 0, 971, 0, 969, - 970, 967, 968, 971, 973, 972, 969, 970, 973, 972, - 969, 970, 973, 971, 0, 972, 969, 970, 973, 0, - 971, 0, 0, 0, 971, 972, 969, 970, 973, 974, - 971, 973, 972, 974, 976, 973, 972, 974, 976, 973, - - 971, 0, 972, 974, 976, 973, 975, 975, 0, 976, - 0, 975, 972, 974, 976, 973, 974, 975, 0, 977, - 974, 976, 978, 977, 974, 976, 978, 975, 0, 977, - 974, 976, 978, 975, 975, 0, 976, 0, 975, 977, - 974, 976, 978, 0, 975, 0, 977, 979, 979, 978, - 977, 0, 979, 978, 975, 0, 977, 980, 979, 978, - 981, 980, 981, 0, 0, 980, 977, 981, 979, 978, - 0, 980, 981, 0, 979, 979, 0, 0, 0, 979, - 0, 980, 0, 0, 980, 979, 0, 981, 980, 981, - 0, 0, 980, 0, 981, 979, 0, 0, 980, 981, - - 982, 0, 982, 983, 0, 983, 982, 982, 980, 0, - 983, 983, 982, 984, 0, 983, 986, 0, 986, 0, - 0, 0, 0, 986, 984, 0, 984, 982, 986, 982, - 983, 984, 983, 982, 982, 0, 984, 983, 983, 982, - 984, 985, 983, 986, 0, 986, 0, 0, 0, 0, - 986, 984, 985, 984, 985, 986, 0, 0, 984, 985, - 987, 0, 987, 984, 985, 988, 0, 987, 985, 988, - 990, 0, 987, 0, 990, 988, 0, 989, 989, 985, - 990, 985, 989, 0, 0, 988, 985, 987, 989, 987, - 990, 985, 988, 0, 987, 0, 988, 990, 989, 987, - - 0, 990, 988, 0, 989, 989, 991, 990, 0, 989, - 991, 992, 988, 992, 0, 989, 991, 990, 992, 0, - 0, 993, 0, 992, 0, 989, 991, 0, 0, 0, - 0, 0, 993, 991, 993, 0, 0, 991, 992, 993, - 992, 0, 0, 991, 993, 992, 0, 994, 993, 0, - 992, 0, 0, 991, 0, 995, 0, 995, 994, 993, - 994, 993, 995, 0, 0, 994, 993, 995, 0, 0, - 994, 993, 0, 0, 994, 0, 996, 0, 996, 0, - 0, 0, 995, 996, 995, 994, 1073, 994, 996, 995, - 1073, 1074, 994, 0, 995, 1074, 1073, 994, 0, 0, - - 1075, 1074, 1075, 996, 0, 996, 1073, 1075, 0, 0, - 996, 1074, 1075, 1073, 1076, 996, 1076, 1073, 1074, 0, - 0, 1076, 1074, 1073, 0, 0, 1076, 1075, 1074, 1075, - 1077, 0, 1077, 1073, 1075, 0, 1078, 1077, 1074, 1075, - 1078, 1076, 1077, 1076, 0, 1079, 1078, 0, 1076, 1079, - 0, 0, 0, 1076, 0, 1079, 1078, 1077, 0, 1077, - 1079, 0, 0, 1078, 1077, 1079, 0, 1078, 1080, 1077, - 1080, 0, 1079, 1078, 0, 1080, 1079, 1081, 0, 1081, - 1080, 0, 1079, 1078, 1081, 0, 1082, 1079, 1082, 1081, - 0, 0, 1079, 1082, 0, 1080, 0, 1080, 1082, 0, - - 0, 0, 1080, 0, 1081, 0, 1081, 1080, 0, 0, - 1083, 1081, 1083, 1082, 0, 1082, 1081, 1083, 0, 1084, - 1082, 1084, 1083, 0, 0, 1082, 1084, 1084, 1085, 1085, - 1085, 1084, 0, 0, 0, 1085, 0, 1083, 0, 1083, - 1085, 0, 0, 0, 1083, 0, 1084, 0, 1084, 1083, - 1086, 0, 0, 1084, 1084, 1085, 1085, 1085, 1084, 1086, - 0, 1086, 1085, 1087, 0, 1087, 1086, 1085, 0, 0, - 1087, 1086, 1088, 0, 1088, 1087, 0, 1086, 0, 1088, - 1088, 0, 0, 0, 1088, 0, 1086, 0, 1086, 0, - 1087, 0, 1087, 1086, 0, 0, 0, 1087, 1086, 1088, - - 0, 1088, 1087, 1089, 1090, 1089, 1088, 1088, 0, 0, - 1089, 1088, 0, 0, 1090, 1089, 1090, 1091, 0, 1091, - 0, 1090, 0, 0, 1091, 0, 1090, 0, 0, 1091, - 1089, 1090, 1089, 0, 0, 0, 1092, 1089, 0, 0, - 0, 1090, 1089, 1090, 1091, 1092, 1091, 1092, 1090, 0, - 0, 1091, 1092, 1090, 0, 0, 1091, 1092, 1093, 1094, - 1093, 1094, 0, 1092, 0, 1093, 1094, 0, 0, 0, - 1093, 1094, 1092, 0, 1092, 0, 0, 0, 0, 1092, - 0, 0, 0, 0, 1092, 1093, 1094, 1093, 1094, 1095, - 0, 1095, 1093, 1094, 0, 1097, 1095, 1093, 1094, 1097, - - 1096, 1095, 1096, 0, 1098, 1097, 0, 1096, 1098, 0, - 0, 0, 1096, 0, 1098, 1097, 1095, 0, 1095, 0, - 0, 0, 1097, 1095, 1098, 0, 1097, 1096, 1095, 1096, - 0, 1098, 1097, 0, 1096, 1098, 1099, 0, 1099, 1096, - 1101, 1098, 1097, 1099, 1101, 1100, 0, 1100, 1099, 0, - 1101, 1098, 1100, 1100, 1102, 0, 1102, 1100, 0, 0, - 1101, 1102, 0, 1099, 0, 1099, 1102, 1101, 0, 0, - 1099, 1101, 1100, 0, 1100, 1099, 0, 1101, 0, 1100, - 1100, 1102, 0, 1102, 1100, 0, 0, 1101, 1102, 1103, - 1104, 1103, 1104, 1102, 0, 0, 1103, 1104, 1105, 0, - - 1105, 1103, 1104, 0, 0, 1105, 0, 0, 0, 0, - 1105, 0, 0, 0, 0, 0, 1103, 1104, 1103, 1104, - 0, 0, 0, 1103, 1104, 1105, 0, 1105, 1103, 1104, - 0, 1106, 1105, 1106, 1107, 0, 1107, 1105, 1106, 0, - 1108, 1107, 1108, 1106, 0, 0, 1107, 1108, 0, 0, - 0, 0, 1108, 0, 0, 0, 0, 0, 1106, 0, - 1106, 1107, 0, 1107, 0, 1106, 0, 1108, 1107, 1108, - 1106, 0, 0, 1107, 1108, 1109, 1110, 1109, 0, 1108, - 1110, 1109, 1109, 0, 0, 0, 1110, 1109, 0, 0, - 1112, 1111, 0, 0, 1112, 1111, 1110, 0, 0, 1111, - - 1112, 0, 1109, 1110, 1109, 1111, 0, 1110, 1109, 1109, - 1112, 0, 0, 1110, 1109, 1111, 0, 1112, 1111, 0, - 1113, 1112, 1111, 1110, 1113, 0, 1111, 1112, 0, 1114, - 1113, 1114, 1111, 0, 0, 0, 1114, 1112, 0, 0, - 1113, 1114, 1111, 1115, 0, 1115, 0, 1113, 0, 0, - 1115, 1113, 1116, 0, 1116, 1115, 1114, 1113, 1114, 1116, - 0, 0, 0, 1114, 1116, 0, 0, 1113, 1114, 0, - 1115, 1117, 1115, 1117, 1118, 0, 0, 1115, 1117, 1116, - 0, 1116, 1115, 1117, 0, 1118, 1116, 1118, 0, 0, - 0, 1116, 1118, 0, 0, 0, 0, 1118, 1117, 0, - - 1117, 1118, 0, 0, 1119, 1117, 1119, 0, 0, 0, - 1117, 1119, 1118, 1120, 1118, 1120, 1119, 0, 0, 1118, - 1120, 1120, 0, 0, 1118, 1120, 1121, 0, 0, 0, - 1121, 1119, 0, 1119, 0, 1122, 1121, 0, 1119, 1122, - 1120, 0, 1120, 1119, 0, 1122, 1121, 1120, 1120, 1125, - 1123, 1125, 1120, 1121, 1123, 1122, 1125, 1121, 0, 0, - 1123, 1125, 1122, 1121, 1124, 0, 1122, 0, 1124, 0, - 1123, 0, 1122, 1121, 1124, 0, 1125, 1123, 1125, 0, - 0, 1123, 1122, 1125, 1124, 0, 0, 1123, 1125, 1127, - 0, 1124, 1126, 0, 1126, 1124, 0, 1123, 1127, 1126, - - 1127, 1124, 0, 0, 1126, 1127, 0, 0, 0, 0, - 1127, 1124, 0, 1128, 0, 0, 1127, 0, 0, 1126, - 0, 1126, 1128, 0, 1128, 1127, 1126, 1127, 0, 1128, - 0, 1126, 1127, 0, 1128, 0, 1129, 1127, 1129, 0, - 1128, 0, 0, 1129, 0, 1130, 0, 1130, 1129, 1128, - 0, 1128, 1130, 0, 0, 0, 1128, 1130, 0, 0, - 0, 1128, 0, 1129, 1131, 1129, 1131, 0, 0, 0, - 1129, 1131, 1130, 0, 1130, 1129, 1131, 0, 1132, 1130, - 1132, 0, 0, 0, 1130, 1132, 0, 1133, 0, 1133, - 1132, 1131, 0, 1131, 1133, 0, 0, 0, 1131, 1133, - - 0, 0, 0, 1131, 0, 1132, 1134, 1132, 1134, 0, - 0, 0, 1132, 1134, 1133, 0, 1133, 1132, 1134, 0, - 1135, 1133, 1135, 1136, 0, 0, 1133, 1135, 0, 0, - 0, 0, 1135, 1134, 1136, 1134, 1136, 0, 0, 0, - 1134, 1136, 1137, 0, 0, 1134, 1136, 1135, 0, 1135, - 1136, 0, 0, 1137, 1135, 1137, 0, 0, 0, 1135, - 1137, 1136, 0, 1136, 0, 1137, 0, 1138, 1136, 1137, - 0, 0, 0, 1136, 0, 0, 1138, 1139, 1138, 1139, - 1137, 0, 1137, 1138, 1139, 1139, 0, 1137, 1138, 1139, - 0, 0, 1137, 0, 1138, 0, 0, 0, 0, 1140, - - 0, 0, 0, 1138, 1139, 1138, 1139, 1140, 0, 1140, - 1138, 1139, 1139, 0, 1140, 1138, 1139, 0, 1141, 1140, - 1141, 1142, 0, 1142, 0, 1141, 1140, 0, 1142, 0, - 1141, 0, 0, 1142, 1140, 0, 1140, 1143, 0, 1143, - 0, 1140, 0, 0, 1143, 1141, 1140, 1141, 1142, 1143, - 1142, 1144, 1141, 1144, 0, 1142, 0, 1141, 1144, 0, - 1142, 0, 0, 1144, 1143, 0, 1143, 1145, 0, 1145, - 1146, 1143, 1146, 1145, 1145, 0, 1143, 1146, 1144, 1145, - 1144, 1194, 1146, 1194, 0, 1144, 0, 0, 1194, 0, - 1144, 0, 0, 1194, 1145, 0, 1145, 1146, 0, 1146, - - 1145, 1145, 0, 0, 1146, 1195, 1145, 1195, 1194, 1146, - 1194, 1196, 1195, 1196, 1197, 1194, 1197, 1195, 1196, 0, - 1194, 1197, 0, 1196, 0, 0, 1197, 1198, 0, 0, - 0, 1198, 1195, 0, 1195, 0, 0, 1198, 1196, 1195, - 1196, 1197, 1199, 1197, 1195, 1196, 1199, 1198, 1197, 0, - 1196, 1200, 1199, 1197, 1198, 1200, 1201, 1201, 1198, 0, - 0, 1200, 1199, 0, 1198, 0, 1202, 0, 0, 1199, - 1202, 1200, 0, 1199, 1198, 0, 1202, 0, 1200, 1199, - 0, 1201, 1200, 0, 0, 1201, 1202, 0, 1200, 1199, - 0, 1201, 1203, 1202, 0, 1204, 1203, 1202, 1200, 1204, - - 1203, 1201, 0, 1202, 0, 1204, 1203, 0, 1201, 0, - 1205, 0, 1201, 1202, 1205, 1204, 1203, 0, 1201, 1203, - 1205, 0, 1204, 1203, 0, 1206, 1204, 1203, 1201, 1206, - 1205, 0, 1204, 1203, 1207, 1206, 0, 1205, 1207, 0, - 0, 1205, 1204, 1203, 1207, 1206, 1212, 1205, 1212, 1207, - 0, 0, 1206, 1212, 1207, 0, 1206, 1205, 1212, 1209, - 0, 1207, 1206, 1209, 1208, 1207, 1208, 0, 1208, 1209, - 0, 1207, 1206, 1212, 1208, 1212, 1207, 0, 1210, 1209, - 1212, 1207, 1210, 0, 1208, 1212, 1209, 1213, 1210, 1213, - 1209, 1208, 0, 1208, 1213, 1208, 1209, 0, 1210, 1213, - - 1211, 1208, 0, 0, 1211, 1210, 1209, 0, 0, 1210, - 1211, 1208, 0, 0, 1213, 1210, 1213, 1214, 0, 1214, - 1211, 1213, 0, 0, 1214, 1210, 1213, 1211, 1216, 1214, - 1216, 1211, 1215, 0, 0, 1216, 0, 1211, 0, 0, - 1216, 1215, 0, 1215, 1214, 0, 1214, 1211, 1215, 0, - 0, 1214, 0, 1215, 0, 1216, 1214, 1216, 0, 1215, - 0, 0, 1216, 0, 1217, 0, 1217, 1216, 1215, 0, - 1215, 1217, 1218, 0, 1218, 1215, 1217, 1220, 0, 1218, - 1215, 1220, 1221, 1219, 1218, 1219, 1221, 1220, 0, 1219, - 1219, 1217, 1221, 1217, 0, 1219, 0, 1220, 1217, 1218, - - 0, 1218, 1221, 1217, 1220, 0, 1218, 0, 1220, 1221, - 1219, 1218, 1219, 1221, 1220, 0, 1219, 1219, 1222, 1221, - 1222, 1223, 1219, 1223, 1220, 1222, 0, 0, 1223, 1221, - 1222, 0, 1224, 1223, 1224, 0, 0, 0, 0, 1224, - 0, 0, 1225, 0, 1224, 1222, 0, 1222, 1223, 0, - 1223, 1225, 1222, 1225, 0, 1223, 0, 1222, 1225, 1224, - 1223, 1224, 0, 1225, 0, 1226, 1224, 1226, 0, 1225, - 0, 1224, 1226, 1226, 0, 0, 0, 1226, 1225, 0, - 1225, 0, 0, 1227, 1227, 1225, 1227, 0, 0, 0, - 1225, 1227, 1226, 0, 1226, 1228, 1227, 1228, 0, 1226, - - 1226, 0, 1228, 0, 1226, 0, 0, 1228, 0, 0, - 1227, 1227, 0, 1227, 1229, 0, 1229, 0, 1227, 0, - 0, 1229, 1228, 1227, 1228, 1230, 1229, 1230, 1231, 1228, - 1231, 0, 1230, 1230, 1228, 1231, 0, 1230, 0, 0, - 1231, 1229, 0, 1229, 1232, 0, 1232, 0, 1229, 0, - 1232, 1232, 1230, 1229, 1230, 1231, 1232, 1231, 0, 1230, - 1230, 0, 1231, 0, 1230, 0, 0, 1231, 1233, 1233, - 1233, 1232, 0, 1232, 1234, 1233, 1234, 1232, 1232, 0, - 1233, 1234, 1234, 1232, 1235, 0, 1234, 0, 1235, 0, - 0, 0, 0, 0, 1235, 1233, 1233, 1233, 0, 0, - - 0, 1234, 1233, 1234, 1235, 0, 1236, 1233, 1234, 1234, - 1236, 1235, 0, 1234, 1237, 1235, 1236, 0, 1237, 1238, - 0, 1235, 0, 1238, 1237, 0, 1236, 0, 0, 1238, - 0, 1235, 1266, 1236, 1237, 0, 1266, 1236, 0, 1238, - 0, 1237, 1266, 1236, 1264, 1237, 1238, 0, 1264, 0, - 1238, 1237, 1266, 1236, 1264, 0, 1238, 1264, 1267, 1266, - 0, 1237, 1267, 1266, 1264, 0, 1238, 0, 1267, 1266, - 1268, 1264, 1269, 1267, 1268, 1264, 1269, 0, 1267, 1266, - 1268, 1264, 1269, 0, 1264, 1267, 0, 0, 0, 1267, - 1268, 1264, 1269, 0, 1270, 1267, 0, 1268, 1270, 1269, - - 1267, 1268, 0, 1269, 1270, 1267, 1271, 1268, 1271, 1269, - 1271, 0, 0, 0, 1270, 0, 1271, 1268, 0, 1269, - 0, 1270, 0, 0, 1272, 1270, 1271, 0, 1272, 0, - 0, 1270, 1273, 1271, 1272, 1271, 1273, 1271, 0, 1272, - 0, 1270, 1273, 1271, 1272, 0, 0, 0, 0, 0, - 1274, 1272, 1273, 1271, 1274, 1272, 0, 0, 0, 1273, - 1274, 1272, 0, 1273, 0, 0, 1272, 0, 0, 1273, - 1274, 1272, 1275, 0, 0, 0, 1275, 1274, 0, 1273, - 0, 1274, 1275, 1277, 1276, 1275, 1276, 1274, 1277, 0, - 1277, 1276, 1275, 0, 1278, 1277, 1276, 1274, 1278, 1275, - - 1277, 0, 0, 1275, 1278, 0, 0, 0, 0, 1275, - 1277, 1276, 1275, 1276, 1278, 1277, 1279, 1277, 1276, 1275, - 1279, 1278, 1277, 1276, 1280, 1278, 1279, 1277, 1280, 1281, - 0, 1278, 0, 1281, 1280, 0, 1279, 0, 1282, 1281, - 0, 1278, 1282, 1279, 1280, 0, 0, 1279, 1282, 1281, - 0, 1280, 0, 1279, 0, 1280, 1281, 0, 1282, 0, - 1281, 1280, 0, 1279, 0, 1282, 1281, 0, 1283, 1282, - 1284, 1280, 1283, 1285, 1284, 1282, 1281, 1285, 1283, 1283, - 1284, 1286, 1286, 1285, 0, 1282, 1286, 0, 1283, 0, - 1284, 0, 1286, 1285, 0, 1283, 0, 1284, 0, 1283, - - 1285, 1284, 1286, 0, 1285, 1283, 1283, 1284, 1286, 1286, - 1285, 1302, 1302, 1286, 1304, 1283, 0, 1284, 1304, 1286, - 1285, 0, 1305, 1306, 1304, 0, 1305, 1306, 0, 1286, - 0, 0, 1305, 1306, 1304, 0, 1302, 0, 0, 0, - 1302, 1304, 1305, 1306, 0, 1304, 1302, 0, 0, 1305, - 1306, 1304, 0, 1305, 1306, 0, 1302, 0, 0, 1305, - 1306, 1304, 0, 1302, 1307, 0, 1307, 1302, 0, 1305, - 1306, 1307, 1308, 1302, 1308, 1309, 1307, 1309, 1310, 1308, - 1310, 0, 1309, 1302, 1308, 1310, 0, 1309, 0, 0, - 1310, 1307, 0, 1307, 0, 0, 0, 0, 1307, 1308, - - 0, 1308, 1309, 1307, 1309, 1310, 1308, 1310, 1311, 1309, - 1311, 1308, 1310, 0, 1309, 1311, 1312, 1310, 1312, 0, - 1311, 1313, 0, 1312, 0, 1313, 1314, 0, 1312, 1325, - 1314, 1313, 0, 1325, 1326, 1311, 1314, 1311, 1326, 1325, - 0, 1313, 1311, 1312, 1326, 1312, 1314, 1311, 1313, 1325, - 1312, 0, 1313, 1314, 1326, 1312, 1325, 1314, 1313, 0, - 1325, 1326, 0, 1314, 0, 1326, 1325, 0, 1313, 0, - 1327, 1326, 0, 1314, 1327, 1328, 1325, 1328, 0, 0, - 1327, 1326, 1328, 0, 1336, 0, 1336, 1328, 0, 0, - 1327, 1336, 0, 0, 0, 0, 1336, 1327, 0, 0, - - 0, 1327, 1328, 0, 1328, 0, 0, 1327, 0, 1328, - 0, 1336, 0, 1336, 1328, 0, 0, 1327, 1336, 0, - 0, 0, 0, 1336, 1368, 1368, 1368, 1368, 1368, 1369, - 0, 0, 1369, 1369, 1371, 1371, 1371, 0, 1371, 1372, - 0, 1372, 1372, 1372, 1373, 0, 1373, 1373, 1373, 1374, - 0, 1374, 1374, 1374, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367 + 28, 23, 21, 21, 31, 37, 28, 45, 23, 22, + 42, 23, 24, 1386, 23, 25, 24, 25, 42, 56, + 24, 32, 25, 101, 33, 32, 24, 25, 33, 24, + 56, 32, 51, 51, 33, 43, 43, 42, 1385, 24, + 59, 59, 25, 24, 25, 42, 34, 24, 32, 25, + 101, 33, 32, 24, 25, 33, 24, 26, 32, 36, + 34, 33, 43, 43, 102, 26, 34, 34, 26, 105, + 36, 26, 29, 34, 26, 1384, 36, 26, 29, 29, + + 29, 88, 88, 1383, 26, 29, 36, 34, 191, 191, + 1381, 102, 26, 34, 34, 26, 105, 36, 26, 29, + 1379, 26, 35, 36, 26, 29, 29, 29, 103, 106, + 35, 38, 29, 108, 35, 38, 103, 35, 35, 38, + 104, 109, 41, 104, 41, 38, 1377, 41, 1375, 35, + 1171, 1171, 112, 115, 1373, 103, 106, 35, 38, 1371, + 108, 35, 38, 103, 35, 35, 38, 104, 109, 41, + 104, 41, 38, 39, 41, 39, 1369, 111, 39, 112, + 115, 39, 1367, 39, 111, 39, 39, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 1365, 116, 114, + + 39, 1363, 39, 116, 111, 39, 107, 107, 39, 114, + 39, 111, 39, 39, 40, 118, 118, 68, 40, 68, + 107, 40, 40, 68, 68, 116, 114, 119, 40, 68, + 116, 40, 1361, 107, 107, 1359, 114, 1308, 1308, 1355, + 1351, 40, 118, 118, 68, 40, 68, 107, 40, 40, + 68, 68, 120, 1344, 119, 40, 68, 1337, 40, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 62, 62, 121, 62, 62, 62, 62, 62, 62, 120, + 69, 123, 1322, 1307, 69, 1282, 122, 122, 69, 62, + 62, 62, 71, 125, 69, 62, 71, 62, 126, 121, + + 127, 1257, 71, 62, 69, 62, 129, 69, 123, 62, + 62, 69, 71, 122, 122, 69, 130, 131, 1210, 71, + 125, 69, 62, 71, 62, 126, 1163, 127, 128, 71, + 62, 69, 62, 129, 128, 1087, 62, 62, 1011, 71, + 910, 809, 679, 130, 131, 62, 63, 63, 132, 63, + 63, 63, 63, 63, 63, 128, 549, 134, 72, 73, + 74, 128, 72, 73, 74, 63, 63, 63, 72, 73, + 74, 133, 63, 85, 133, 132, 63, 85, 72, 73, + 74, 135, 63, 85, 134, 72, 73, 74, 137, 72, + 73, 74, 63, 85, 421, 72, 73, 74, 133, 63, + + 85, 133, 292, 63, 85, 72, 73, 74, 135, 63, + 85, 78, 195, 84, 138, 137, 84, 84, 78, 63, + 85, 63, 64, 84, 140, 78, 64, 141, 78, 64, + 64, 78, 142, 84, 143, 144, 64, 144, 78, 64, + 84, 138, 64, 84, 84, 78, 64, 193, 146, 64, + 84, 140, 78, 64, 141, 78, 64, 64, 78, 142, + 84, 143, 144, 64, 144, 147, 64, 92, 148, 64, + 149, 90, 79, 64, 65, 146, 79, 82, 65, 82, + 79, 82, 65, 87, 82, 151, 79, 152, 65, 82, + 86, 65, 147, 61, 86, 148, 79, 149, 65, 79, + + 86, 65, 60, 79, 82, 65, 82, 79, 82, 65, + 86, 82, 151, 79, 152, 65, 82, 86, 65, 53, + 83, 86, 52, 79, 83, 65, 66, 86, 83, 145, + 66, 145, 153, 66, 83, 66, 66, 86, 150, 155, + 66, 150, 145, 156, 83, 66, 66, 83, 113, 113, + 113, 83, 113, 66, 48, 83, 145, 66, 145, 153, + 66, 83, 66, 66, 46, 150, 155, 66, 150, 145, + 156, 83, 66, 66, 67, 113, 113, 113, 117, 113, + 117, 67, 67, 117, 157, 67, 158, 159, 67, 117, + 161, 67, 162, 160, 67, 20, 117, 160, 19, 164, + + 11, 67, 7, 4, 3, 117, 0, 117, 67, 67, + 117, 157, 67, 158, 159, 67, 117, 161, 67, 162, + 160, 67, 70, 117, 160, 124, 164, 124, 70, 70, + 70, 124, 163, 165, 166, 70, 0, 163, 124, 168, + 70, 0, 124, 169, 165, 163, 0, 0, 0, 70, + 163, 0, 124, 168, 124, 70, 70, 70, 124, 163, + 165, 166, 70, 139, 163, 124, 168, 70, 75, 124, + 169, 165, 163, 139, 167, 75, 170, 163, 139, 139, + 168, 171, 75, 167, 172, 75, 173, 174, 75, 75, + 139, 167, 175, 176, 177, 75, 0, 0, 174, 0, + + 139, 167, 75, 170, 0, 139, 139, 0, 171, 75, + 167, 172, 75, 173, 174, 75, 75, 76, 167, 175, + 176, 177, 76, 178, 76, 174, 179, 180, 181, 182, + 76, 76, 183, 179, 76, 182, 179, 76, 76, 0, + 184, 185, 186, 178, 76, 183, 0, 295, 0, 76, + 178, 76, 297, 179, 180, 181, 182, 76, 76, 183, + 179, 76, 182, 179, 76, 76, 77, 184, 185, 186, + 178, 203, 183, 77, 295, 203, 298, 77, 300, 297, + 77, 203, 302, 77, 303, 209, 77, 0, 304, 0, + 305, 203, 0, 77, 209, 0, 209, 0, 203, 0, + + 77, 209, 203, 298, 77, 300, 209, 77, 203, 302, + 77, 303, 209, 77, 80, 304, 80, 305, 203, 80, + 80, 209, 80, 209, 80, 306, 80, 80, 209, 204, + 204, 307, 0, 209, 204, 309, 80, 0, 0, 310, + 204, 80, 311, 80, 0, 0, 80, 80, 0, 80, + 204, 80, 306, 80, 80, 205, 204, 204, 307, 205, + 312, 204, 309, 80, 81, 205, 310, 204, 81, 311, + 205, 81, 81, 313, 314, 205, 315, 204, 81, 316, + 317, 81, 205, 318, 319, 320, 205, 312, 81, 0, + 0, 81, 205, 0, 0, 81, 0, 205, 81, 81, + + 313, 314, 205, 315, 0, 81, 316, 317, 81, 0, + 318, 319, 320, 0, 0, 81, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 206, 321, + 206, 208, 323, 208, 324, 206, 206, 208, 208, 325, + 206, 0, 326, 208, 293, 293, 293, 293, 293, 293, + + 293, 293, 293, 293, 0, 206, 321, 206, 208, 323, + 208, 324, 206, 206, 208, 208, 325, 206, 207, 326, + 208, 207, 0, 211, 327, 0, 328, 0, 211, 207, + 211, 207, 281, 329, 212, 211, 207, 331, 212, 281, + 211, 207, 0, 0, 212, 207, 281, 0, 207, 281, + 211, 327, 281, 328, 212, 211, 207, 211, 207, 281, + 329, 212, 211, 207, 331, 212, 281, 211, 207, 210, + 210, 212, 332, 281, 213, 210, 281, 210, 213, 281, + 333, 212, 210, 210, 213, 0, 214, 210, 214, 334, + 0, 0, 0, 214, 213, 335, 210, 210, 214, 332, + + 336, 213, 210, 337, 210, 213, 215, 333, 217, 210, + 210, 213, 217, 214, 210, 214, 334, 215, 217, 215, + 214, 213, 335, 0, 215, 214, 338, 336, 217, 215, + 337, 0, 0, 215, 0, 217, 0, 0, 339, 217, + 340, 0, 0, 0, 215, 217, 215, 0, 0, 342, + 218, 215, 0, 338, 218, 217, 215, 216, 216, 216, + 218, 216, 0, 218, 216, 339, 222, 340, 222, 216, + 218, 343, 0, 222, 341, 222, 342, 218, 222, 219, + 344, 218, 341, 219, 216, 216, 216, 218, 216, 219, + 218, 216, 345, 222, 219, 222, 216, 218, 343, 219, + + 222, 341, 222, 346, 347, 222, 219, 344, 0, 341, + 219, 0, 348, 0, 0, 0, 219, 0, 0, 345, + 0, 219, 349, 0, 223, 350, 219, 220, 223, 220, + 346, 347, 220, 351, 223, 221, 352, 221, 220, 348, + 220, 221, 221, 353, 223, 220, 224, 221, 224, 349, + 220, 223, 350, 224, 220, 223, 220, 354, 224, 220, + 351, 223, 221, 352, 221, 220, 0, 220, 221, 221, + 353, 223, 220, 224, 221, 224, 0, 220, 0, 0, + 224, 356, 226, 357, 354, 224, 225, 225, 308, 0, + 308, 226, 228, 226, 228, 225, 230, 225, 226, 228, + + 230, 359, 225, 226, 228, 308, 230, 225, 356, 226, + 357, 0, 360, 225, 225, 308, 230, 308, 226, 228, + 226, 228, 225, 230, 225, 226, 228, 230, 359, 225, + 226, 228, 308, 230, 225, 227, 355, 227, 229, 360, + 229, 227, 361, 230, 362, 229, 355, 227, 227, 231, + 229, 231, 227, 364, 0, 231, 231, 227, 0, 0, + 0, 231, 227, 355, 227, 229, 365, 229, 227, 361, + 0, 362, 229, 355, 227, 227, 231, 229, 231, 227, + 364, 232, 231, 231, 227, 232, 234, 233, 231, 233, + 234, 232, 366, 365, 233, 236, 234, 236, 367, 233, + + 235, 232, 236, 368, 235, 236, 234, 236, 232, 0, + 235, 0, 232, 234, 233, 0, 233, 234, 232, 366, + 235, 233, 236, 234, 236, 367, 233, 235, 232, 236, + 368, 235, 236, 234, 236, 0, 237, 235, 237, 370, + 371, 372, 238, 237, 238, 373, 374, 235, 237, 238, + 239, 238, 239, 375, 238, 0, 0, 239, 376, 0, + 0, 0, 239, 237, 363, 237, 370, 371, 372, 238, + 237, 238, 373, 374, 363, 237, 238, 239, 238, 239, + 375, 238, 240, 241, 239, 376, 240, 241, 243, 239, + 243, 363, 240, 241, 241, 243, 378, 380, 381, 377, + + 243, 363, 240, 241, 0, 0, 0, 382, 383, 240, + 241, 0, 0, 240, 241, 243, 0, 243, 377, 240, + 241, 241, 243, 378, 380, 381, 377, 243, 244, 240, + 241, 242, 244, 245, 382, 383, 379, 245, 244, 242, + 384, 242, 385, 245, 386, 377, 242, 242, 244, 379, + 249, 242, 249, 245, 0, 244, 249, 249, 242, 244, + 245, 0, 249, 379, 245, 244, 242, 384, 242, 385, + 245, 386, 0, 242, 242, 244, 379, 249, 242, 249, + 245, 246, 246, 249, 249, 246, 250, 387, 250, 249, + 388, 246, 251, 250, 251, 389, 322, 390, 250, 251, + + 322, 246, 0, 391, 251, 392, 0, 0, 246, 246, + 0, 322, 246, 250, 387, 250, 394, 388, 246, 251, + 250, 251, 389, 322, 390, 250, 251, 322, 246, 247, + 391, 251, 392, 247, 252, 247, 252, 247, 322, 247, + 395, 252, 252, 394, 396, 397, 252, 398, 399, 247, + 0, 0, 0, 0, 400, 0, 247, 0, 401, 0, + 247, 252, 247, 252, 247, 0, 247, 395, 252, 252, + 402, 396, 397, 252, 398, 399, 247, 248, 256, 248, + 254, 400, 254, 403, 256, 401, 256, 254, 248, 404, + 248, 256, 254, 0, 406, 248, 256, 402, 0, 408, + + 248, 0, 410, 0, 248, 256, 248, 254, 0, 254, + 403, 256, 0, 256, 254, 248, 404, 248, 256, 254, + 255, 406, 248, 256, 0, 407, 408, 248, 253, 410, + 253, 255, 411, 255, 407, 253, 253, 0, 255, 253, + 253, 412, 257, 255, 257, 0, 413, 255, 0, 257, + 0, 409, 407, 409, 257, 253, 0, 253, 255, 411, + 255, 407, 253, 253, 258, 255, 253, 253, 412, 257, + 255, 257, 258, 413, 258, 259, 257, 259, 409, 258, + 409, 257, 259, 259, 258, 260, 0, 259, 414, 260, + 0, 258, 415, 416, 0, 260, 0, 0, 0, 258, + + 0, 258, 259, 418, 259, 260, 258, 0, 0, 259, + 259, 258, 260, 261, 259, 414, 260, 261, 0, 415, + 416, 262, 260, 261, 417, 262, 261, 263, 417, 262, + 418, 263, 260, 261, 265, 262, 265, 263, 419, 264, + 261, 265, 550, 264, 261, 262, 265, 263, 262, 264, + 261, 417, 262, 261, 263, 417, 262, 0, 263, 264, + 261, 265, 262, 265, 263, 419, 264, 0, 265, 550, + 264, 0, 262, 265, 263, 0, 264, 267, 0, 0, + 0, 272, 267, 0, 267, 272, 264, 266, 551, 267, + 552, 272, 266, 553, 267, 268, 554, 268, 266, 555, + + 266, 272, 268, 556, 267, 266, 268, 268, 272, 267, + 266, 267, 272, 0, 266, 551, 267, 552, 272, 266, + 553, 267, 268, 554, 268, 266, 555, 266, 272, 268, + 556, 557, 266, 268, 268, 269, 271, 266, 0, 269, + 271, 269, 276, 558, 271, 276, 269, 560, 563, 276, + 271, 269, 0, 564, 565, 276, 566, 568, 557, 569, + 271, 0, 269, 271, 570, 276, 269, 271, 269, 276, + 558, 271, 276, 269, 560, 563, 276, 271, 269, 270, + 564, 565, 276, 566, 568, 273, 569, 271, 270, 273, + 270, 570, 276, 273, 274, 270, 270, 0, 274, 273, + + 270, 0, 571, 573, 274, 0, 270, 274, 574, 273, + 575, 0, 273, 576, 274, 270, 273, 270, 577, 0, + 273, 274, 270, 270, 275, 274, 273, 270, 275, 571, + 573, 274, 275, 578, 274, 574, 273, 575, 275, 0, + 576, 274, 277, 277, 277, 577, 278, 0, 275, 277, + 278, 275, 579, 580, 277, 275, 278, 0, 581, 275, + 578, 0, 0, 0, 279, 275, 278, 0, 279, 277, + 277, 277, 279, 278, 279, 275, 277, 278, 280, 579, + 580, 277, 280, 278, 279, 581, 582, 0, 280, 280, + 284, 279, 585, 278, 284, 279, 586, 0, 280, 279, + + 284, 279, 0, 283, 283, 280, 0, 587, 283, 280, + 284, 279, 0, 582, 283, 280, 280, 284, 0, 585, + 588, 284, 0, 586, 283, 280, 282, 284, 0, 282, + 283, 283, 589, 282, 587, 283, 282, 284, 285, 282, + 285, 283, 286, 590, 285, 285, 286, 588, 591, 282, + 285, 283, 286, 282, 287, 286, 282, 0, 287, 589, + 282, 0, 286, 282, 287, 285, 282, 285, 0, 286, + 590, 285, 285, 286, 287, 591, 282, 285, 592, 286, + 288, 287, 286, 423, 288, 287, 594, 423, 289, 286, + 288, 287, 289, 423, 595, 288, 289, 427, 596, 427, + + 288, 287, 289, 423, 427, 592, 597, 288, 600, 427, + 423, 288, 289, 594, 423, 289, 0, 288, 0, 289, + 423, 595, 288, 289, 427, 596, 427, 288, 0, 289, + 423, 427, 0, 597, 0, 600, 427, 0, 601, 289, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 424, 425, 426, 0, 424, 425, 426, 428, 0, 428, + 424, 425, 426, 0, 428, 601, 603, 605, 606, 428, + 424, 425, 426, 430, 0, 430, 0, 424, 425, 426, + 430, 424, 425, 426, 428, 430, 428, 424, 425, 426, + 429, 428, 0, 603, 605, 606, 428, 424, 425, 426, + + 430, 429, 430, 429, 607, 431, 432, 430, 429, 431, + 432, 608, 430, 429, 0, 431, 432, 429, 0, 434, + 609, 610, 613, 434, 0, 431, 432, 617, 429, 434, + 429, 607, 431, 432, 0, 429, 431, 432, 608, 434, + 429, 433, 431, 432, 619, 433, 434, 609, 610, 613, + 434, 433, 431, 432, 617, 435, 434, 435, 436, 433, + 436, 433, 435, 620, 0, 436, 434, 435, 433, 622, + 436, 619, 433, 0, 0, 624, 0, 0, 433, 625, + 0, 626, 435, 0, 435, 436, 433, 436, 433, 435, + 620, 439, 436, 0, 435, 439, 622, 436, 437, 438, + + 437, 439, 624, 438, 437, 611, 625, 439, 626, 438, + 437, 439, 438, 440, 0, 437, 611, 440, 439, 438, + 437, 440, 439, 440, 0, 437, 438, 437, 439, 0, + 438, 437, 611, 440, 439, 628, 438, 437, 439, 438, + 440, 441, 437, 611, 440, 441, 438, 437, 440, 442, + 440, 441, 629, 442, 623, 623, 441, 630, 631, 442, + 440, 441, 628, 443, 633, 634, 0, 443, 441, 442, + 636, 443, 441, 0, 0, 637, 442, 443, 441, 629, + 442, 623, 623, 441, 630, 631, 442, 443, 441, 0, + 443, 633, 634, 444, 443, 444, 442, 636, 443, 0, + + 444, 445, 637, 445, 443, 444, 446, 445, 445, 638, + 446, 449, 639, 445, 443, 449, 446, 447, 0, 447, + 444, 449, 444, 0, 447, 0, 446, 444, 445, 447, + 445, 449, 444, 446, 445, 445, 638, 446, 449, 639, + 445, 640, 449, 446, 447, 448, 447, 448, 449, 0, + 451, 447, 448, 446, 451, 0, 447, 448, 449, 450, + 451, 0, 642, 450, 0, 451, 643, 450, 640, 644, + 451, 0, 448, 450, 448, 645, 452, 451, 452, 448, + 646, 451, 452, 450, 448, 648, 450, 451, 452, 642, + 450, 453, 451, 643, 450, 453, 644, 451, 452, 0, + + 450, 453, 645, 452, 454, 452, 0, 646, 454, 452, + 450, 453, 648, 455, 454, 452, 455, 0, 453, 454, + 455, 0, 453, 649, 454, 452, 455, 0, 453, 457, + 0, 454, 650, 457, 0, 454, 455, 0, 453, 457, + 455, 454, 651, 455, 456, 654, 454, 455, 456, 457, + 649, 454, 0, 455, 456, 456, 457, 458, 459, 650, + 457, 458, 459, 455, 456, 655, 457, 458, 459, 651, + 461, 456, 654, 656, 461, 456, 457, 458, 459, 460, + 461, 456, 456, 460, 458, 459, 657, 460, 458, 459, + 461, 456, 655, 460, 458, 459, 462, 461, 462, 658, + + 656, 461, 462, 460, 458, 459, 460, 461, 462, 463, + 460, 463, 0, 657, 460, 0, 463, 461, 462, 0, + 460, 463, 661, 462, 0, 462, 658, 0, 662, 462, + 460, 0, 464, 0, 464, 462, 463, 664, 463, 464, + 465, 0, 465, 463, 464, 462, 465, 465, 463, 661, + 467, 466, 465, 466, 467, 662, 665, 0, 466, 464, + 467, 464, 666, 466, 664, 0, 464, 465, 468, 465, + 467, 464, 468, 465, 465, 0, 468, 467, 466, 465, + 466, 467, 468, 665, 469, 466, 469, 467, 667, 666, + 466, 469, 468, 0, 470, 468, 469, 467, 470, 468, + + 668, 0, 470, 468, 470, 0, 0, 0, 669, 468, + 670, 469, 471, 469, 470, 667, 471, 0, 469, 468, + 471, 470, 471, 469, 0, 470, 472, 668, 472, 470, + 671, 470, 471, 472, 473, 669, 672, 670, 472, 471, + 0, 470, 0, 471, 473, 0, 473, 471, 0, 471, + 674, 473, 0, 472, 676, 472, 473, 671, 678, 471, + 472, 473, 476, 672, 475, 472, 476, 474, 475, 474, + 475, 473, 476, 473, 474, 475, 474, 674, 473, 474, + 475, 676, 476, 473, 812, 678, 0, 814, 0, 476, + 0, 475, 0, 476, 474, 475, 474, 475, 816, 476, + + 477, 474, 475, 474, 477, 817, 474, 475, 478, 476, + 477, 812, 478, 479, 814, 477, 818, 479, 478, 479, + 477, 478, 0, 479, 819, 816, 0, 477, 478, 0, + 0, 477, 817, 479, 0, 478, 820, 477, 821, 478, + 479, 822, 477, 818, 479, 478, 479, 477, 478, 480, + 479, 819, 481, 480, 482, 478, 481, 483, 482, 480, + 479, 483, 481, 820, 482, 821, 0, 483, 822, 480, + 0, 0, 481, 823, 482, 0, 480, 483, 0, 481, + 480, 482, 0, 481, 483, 482, 480, 0, 483, 481, + 0, 482, 824, 484, 483, 826, 480, 484, 485, 481, + + 823, 482, 485, 484, 483, 486, 827, 486, 485, 487, + 828, 487, 486, 484, 485, 0, 487, 486, 485, 824, + 484, 487, 826, 829, 484, 485, 830, 0, 0, 485, + 484, 831, 486, 827, 486, 485, 487, 828, 487, 486, + 484, 485, 489, 487, 486, 485, 489, 488, 487, 488, + 829, 832, 489, 830, 488, 488, 0, 490, 831, 488, + 0, 490, 489, 0, 0, 834, 0, 490, 0, 489, + 835, 836, 837, 489, 488, 838, 488, 490, 832, 489, + 0, 488, 488, 493, 490, 493, 488, 493, 490, 489, + 491, 491, 834, 493, 490, 491, 839, 835, 836, 837, + + 840, 491, 838, 493, 490, 494, 841, 494, 0, 494, + 493, 491, 493, 0, 493, 494, 0, 491, 491, 0, + 493, 842, 491, 839, 0, 494, 0, 840, 491, 0, + 493, 496, 494, 841, 494, 496, 494, 843, 491, 492, + 495, 496, 494, 492, 495, 844, 496, 492, 842, 492, + 495, 496, 494, 492, 0, 847, 495, 0, 496, 848, + 495, 0, 496, 492, 843, 497, 492, 495, 496, 497, + 492, 495, 844, 496, 492, 497, 492, 495, 496, 849, + 492, 497, 847, 495, 498, 497, 848, 495, 498, 499, + 492, 850, 497, 499, 498, 851, 497, 499, 500, 852, + + 500, 855, 497, 499, 498, 500, 849, 858, 497, 0, + 500, 498, 497, 499, 0, 498, 499, 859, 850, 0, + 499, 498, 851, 861, 499, 500, 852, 500, 855, 0, + 499, 498, 500, 864, 858, 0, 501, 500, 501, 502, + 499, 502, 501, 501, 859, 0, 502, 0, 501, 867, + 861, 502, 503, 0, 504, 868, 503, 869, 504, 870, + 864, 871, 503, 501, 504, 501, 502, 505, 502, 501, + 501, 505, 503, 502, 504, 501, 867, 505, 502, 503, + 505, 504, 868, 503, 869, 504, 870, 505, 871, 503, + 872, 504, 0, 507, 505, 507, 0, 875, 505, 503, + + 507, 504, 0, 876, 505, 507, 512, 505, 512, 509, + 509, 509, 0, 512, 505, 506, 509, 872, 512, 506, + 507, 509, 507, 506, 875, 0, 877, 507, 878, 506, + 876, 0, 507, 512, 506, 512, 509, 509, 509, 506, + 512, 860, 506, 509, 860, 512, 506, 879, 509, 0, + 506, 0, 510, 877, 510, 878, 506, 882, 511, 510, + 510, 506, 0, 511, 510, 511, 506, 508, 860, 883, + 511, 860, 0, 0, 879, 511, 508, 0, 508, 510, + 508, 510, 0, 508, 882, 511, 510, 510, 508, 513, + 511, 510, 511, 513, 508, 884, 883, 511, 886, 513, + + 514, 0, 511, 508, 514, 508, 0, 508, 514, 513, + 508, 887, 0, 515, 514, 508, 513, 515, 0, 0, + 513, 0, 884, 515, 514, 886, 513, 514, 515, 888, + 0, 514, 0, 515, 0, 514, 513, 889, 887, 516, + 515, 514, 516, 516, 515, 517, 518, 517, 518, 516, + 515, 514, 517, 518, 0, 515, 888, 517, 518, 516, + 515, 519, 891, 892, 889, 519, 516, 893, 0, 516, + 516, 519, 517, 518, 517, 518, 516, 894, 895, 517, + 518, 519, 896, 520, 517, 518, 516, 520, 519, 891, + 892, 521, 519, 520, 893, 521, 522, 897, 519, 898, + + 522, 521, 899, 520, 894, 895, 522, 0, 519, 896, + 520, 521, 0, 0, 520, 0, 522, 0, 521, 0, + 520, 523, 521, 522, 897, 523, 898, 522, 521, 899, + 520, 523, 901, 522, 523, 524, 525, 902, 521, 524, + 525, 523, 526, 522, 526, 524, 525, 525, 523, 526, + 0, 903, 523, 524, 526, 524, 525, 0, 523, 901, + 905, 523, 524, 525, 902, 0, 524, 525, 523, 526, + 0, 526, 524, 525, 525, 0, 526, 527, 903, 527, + 524, 526, 524, 525, 527, 527, 528, 905, 528, 527, + 529, 906, 529, 528, 528, 907, 1012, 529, 528, 0, + + 1014, 0, 529, 0, 527, 0, 527, 0, 0, 1016, + 0, 527, 527, 528, 1017, 528, 527, 529, 906, 529, + 528, 528, 907, 1012, 529, 528, 530, 1014, 530, 529, + 530, 0, 531, 530, 531, 532, 1016, 532, 530, 531, + 531, 1017, 532, 1018, 531, 0, 1019, 532, 533, 0, + 0, 1021, 533, 530, 0, 530, 0, 530, 533, 531, + 530, 531, 532, 1023, 532, 530, 531, 531, 533, 532, + 1018, 531, 534, 1019, 532, 533, 534, 536, 1021, 533, + 0, 535, 534, 535, 536, 533, 536, 0, 535, 1024, + 1023, 536, 534, 535, 1025, 533, 536, 537, 0, 534, + + 0, 537, 538, 534, 536, 0, 538, 537, 535, 534, + 535, 536, 538, 536, 538, 535, 1024, 537, 536, 534, + 535, 1025, 538, 536, 537, 541, 539, 541, 537, 538, + 539, 0, 541, 538, 537, 1026, 539, 541, 0, 538, + 0, 538, 1027, 0, 537, 1029, 539, 540, 1030, 538, + 0, 540, 541, 539, 541, 540, 1032, 539, 542, 541, + 542, 540, 1026, 539, 541, 542, 1034, 542, 543, 1027, + 542, 540, 1029, 539, 540, 1030, 0, 543, 540, 543, + 0, 0, 540, 1032, 543, 542, 0, 542, 540, 543, + 1037, 1039, 542, 1034, 542, 543, 1040, 542, 540, 0, + + 0, 544, 1041, 544, 543, 0, 543, 545, 544, 545, + 1042, 543, 544, 544, 545, 545, 543, 1037, 1039, 545, + 546, 0, 546, 1040, 1049, 1050, 546, 546, 544, 1041, + 544, 0, 546, 0, 545, 544, 545, 1042, 1051, 544, + 544, 545, 545, 1054, 547, 1056, 545, 546, 547, 546, + 547, 1049, 1050, 546, 546, 547, 548, 1058, 548, 546, + 547, 0, 548, 548, 1060, 1051, 0, 680, 548, 680, + 1054, 547, 1056, 680, 680, 547, 1061, 547, 1062, 680, + 0, 0, 547, 548, 1058, 548, 681, 547, 681, 548, + 548, 1060, 681, 681, 680, 548, 680, 0, 681, 0, + + 680, 680, 1063, 1061, 682, 1062, 680, 683, 682, 0, + 1064, 683, 0, 681, 682, 681, 685, 683, 685, 681, + 681, 0, 1065, 685, 682, 681, 684, 683, 685, 1063, + 684, 682, 1067, 0, 683, 682, 684, 1064, 683, 684, + 0, 682, 1068, 685, 683, 685, 684, 0, 686, 1065, + 685, 682, 686, 684, 683, 685, 1069, 684, 686, 1067, + 687, 688, 687, 684, 1070, 688, 684, 687, 686, 1068, + 689, 688, 687, 684, 689, 686, 1072, 0, 0, 686, + 689, 688, 0, 1069, 1074, 686, 1076, 687, 688, 687, + 689, 1070, 688, 0, 687, 686, 690, 689, 688, 687, + + 690, 689, 691, 1072, 690, 692, 691, 689, 688, 692, + 690, 1074, 691, 1076, 1077, 692, 1078, 689, 1079, 1080, + 690, 1085, 691, 690, 1086, 692, 693, 690, 0, 691, + 693, 690, 692, 691, 693, 0, 692, 690, 0, 691, + 693, 1077, 692, 1078, 1168, 1079, 1080, 690, 1085, 691, + 693, 1086, 692, 693, 694, 695, 696, 693, 694, 695, + 696, 693, 694, 0, 694, 695, 696, 693, 697, 696, + 1172, 1168, 697, 0, 694, 695, 696, 693, 697, 0, + 700, 694, 695, 696, 700, 694, 695, 696, 697, 694, + 700, 694, 695, 696, 698, 697, 696, 1172, 698, 697, + + 700, 694, 695, 696, 698, 697, 699, 700, 699, 698, + 1173, 700, 0, 699, 698, 697, 1176, 700, 699, 701, + 1177, 698, 702, 701, 1178, 698, 702, 700, 0, 701, + 0, 698, 702, 699, 701, 699, 698, 1173, 0, 701, + 699, 698, 702, 1176, 0, 699, 701, 1177, 0, 702, + 701, 1178, 1179, 702, 1183, 703, 701, 703, 1186, 702, + 1187, 701, 703, 704, 704, 704, 701, 703, 1190, 702, + 704, 705, 1191, 705, 0, 704, 0, 1192, 705, 1179, + 705, 1183, 703, 705, 703, 1186, 0, 1187, 0, 703, + 704, 704, 704, 1193, 703, 1190, 1196, 704, 705, 1191, + + 705, 706, 704, 706, 1192, 705, 708, 705, 706, 706, + 705, 1197, 1198, 706, 707, 707, 707, 708, 0, 708, + 1193, 707, 0, 1196, 708, 709, 707, 709, 706, 708, + 706, 709, 709, 708, 1201, 706, 706, 709, 1197, 1198, + 706, 707, 707, 707, 708, 711, 708, 0, 707, 711, + 1203, 708, 709, 707, 709, 711, 708, 710, 709, 709, + 1204, 1201, 1205, 1206, 709, 711, 710, 712, 710, 712, + 0, 1207, 711, 710, 712, 1258, 711, 1203, 710, 712, + 1261, 0, 711, 0, 710, 1262, 0, 1204, 0, 1205, + 1206, 0, 711, 710, 712, 710, 712, 713, 1207, 713, + + 710, 712, 1258, 715, 713, 710, 712, 1261, 714, 713, + 714, 715, 1262, 715, 0, 714, 0, 1266, 715, 0, + 714, 1267, 1270, 715, 713, 0, 713, 0, 0, 0, + 715, 713, 0, 0, 1271, 714, 713, 714, 715, 716, + 715, 716, 714, 716, 1266, 715, 716, 714, 1267, 1270, + 715, 716, 717, 718, 717, 718, 717, 1272, 1273, 717, + 718, 1271, 718, 0, 717, 718, 716, 1277, 716, 0, + 716, 0, 1278, 716, 0, 0, 1279, 0, 716, 717, + 718, 717, 718, 717, 1272, 1273, 717, 718, 719, 718, + 719, 717, 718, 720, 1277, 719, 719, 0, 722, 1278, + + 719, 721, 722, 1279, 720, 0, 720, 0, 722, 0, + 1281, 720, 721, 0, 721, 719, 720, 719, 722, 721, + 720, 0, 719, 719, 721, 722, 1309, 719, 721, 722, + 723, 720, 724, 720, 723, 722, 724, 1281, 720, 721, + 723, 721, 724, 720, 725, 722, 721, 724, 725, 0, + 723, 721, 724, 1309, 725, 0, 726, 723, 1310, 724, + 726, 723, 1314, 724, 725, 0, 726, 723, 0, 724, + 1317, 725, 1320, 0, 724, 725, 726, 723, 727, 724, + 728, 725, 727, 726, 728, 1310, 727, 726, 1324, 1314, + 728, 725, 727, 726, 729, 1259, 1259, 1317, 729, 1320, + + 728, 0, 727, 726, 729, 727, 0, 728, 730, 727, + 0, 728, 730, 727, 729, 1324, 730, 728, 0, 727, + 0, 729, 730, 0, 732, 729, 731, 728, 732, 727, + 731, 729, 730, 1259, 732, 730, 731, 731, 733, 730, + 733, 729, 1339, 730, 732, 733, 731, 1284, 1284, 730, + 733, 732, 0, 731, 0, 732, 0, 731, 0, 730, + 1259, 732, 0, 731, 731, 733, 1343, 733, 734, 1339, + 734, 732, 733, 731, 735, 734, 735, 733, 736, 737, + 734, 735, 736, 737, 1346, 1284, 735, 1352, 736, 737, + 1356, 1360, 737, 1343, 1362, 734, 1364, 734, 736, 737, + + 0, 735, 734, 735, 0, 736, 737, 734, 735, 736, + 737, 1346, 1284, 735, 1352, 736, 737, 1356, 1360, 737, + 738, 1362, 738, 1364, 1366, 736, 737, 738, 739, 1368, + 739, 740, 738, 740, 739, 739, 1370, 740, 740, 1372, + 739, 1374, 1376, 740, 1338, 1338, 0, 738, 0, 738, + 1378, 1366, 0, 0, 738, 739, 1368, 739, 740, 738, + 740, 739, 739, 1370, 740, 740, 1372, 739, 1374, 1376, + 740, 741, 742, 743, 742, 743, 741, 1378, 741, 742, + 743, 0, 741, 741, 742, 743, 1338, 0, 741, 0, + 1345, 1345, 0, 0, 0, 0, 0, 0, 741, 742, + + 743, 742, 743, 741, 0, 741, 742, 743, 0, 741, + 741, 742, 743, 1338, 744, 741, 744, 745, 746, 745, + 746, 744, 0, 0, 745, 746, 744, 0, 0, 745, + 746, 0, 1345, 0, 0, 0, 0, 0, 0, 0, + 0, 744, 0, 744, 745, 746, 745, 746, 744, 0, + 0, 745, 746, 744, 0, 0, 745, 746, 747, 1345, + 747, 748, 749, 748, 749, 747, 747, 0, 748, 749, + 747, 0, 0, 748, 749, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 747, 0, 747, 748, 749, + 748, 749, 747, 747, 750, 748, 749, 747, 750, 751, + + 748, 749, 752, 751, 750, 0, 752, 754, 753, 751, + 753, 754, 752, 754, 750, 753, 753, 0, 754, 751, + 753, 750, 752, 754, 0, 750, 751, 0, 0, 752, + 751, 750, 0, 752, 754, 753, 751, 753, 754, 752, + 754, 750, 753, 753, 756, 754, 751, 753, 756, 752, + 754, 755, 757, 755, 756, 0, 757, 755, 755, 0, + 0, 0, 757, 755, 756, 0, 0, 0, 0, 0, + 0, 756, 757, 0, 0, 756, 0, 0, 755, 757, + 755, 756, 0, 757, 755, 755, 758, 0, 758, 757, + 755, 756, 758, 0, 0, 0, 759, 760, 758, 757, + + 759, 760, 0, 0, 0, 0, 759, 760, 758, 0, + 760, 0, 0, 758, 0, 758, 759, 760, 0, 758, + 0, 0, 0, 759, 760, 758, 761, 759, 760, 0, + 761, 0, 0, 759, 760, 758, 761, 760, 762, 761, + 0, 763, 762, 759, 760, 763, 761, 0, 762, 763, + 764, 763, 0, 761, 764, 0, 0, 761, 762, 0, + 764, 763, 0, 761, 0, 762, 761, 0, 763, 762, + 764, 0, 763, 761, 0, 762, 763, 764, 763, 765, + 766, 764, 0, 765, 766, 762, 0, 764, 763, 765, + 766, 0, 0, 0, 767, 0, 0, 764, 767, 765, + + 766, 0, 767, 0, 0, 0, 765, 766, 767, 0, + 765, 766, 0, 0, 0, 0, 765, 766, 767, 0, + 768, 767, 0, 0, 768, 767, 765, 766, 768, 767, + 0, 0, 769, 770, 768, 767, 769, 770, 0, 0, + 0, 0, 769, 770, 768, 767, 771, 768, 0, 0, + 771, 768, 769, 770, 0, 768, 771, 0, 0, 769, + 770, 768, 0, 769, 770, 0, 771, 0, 772, 769, + 770, 768, 772, 771, 0, 0, 0, 771, 772, 769, + 770, 772, 773, 771, 0, 0, 773, 774, 772, 0, + 773, 774, 773, 771, 0, 772, 0, 774, 0, 772, + + 774, 0, 773, 0, 0, 772, 775, 774, 772, 773, + 775, 0, 0, 773, 774, 772, 775, 773, 774, 773, + 0, 775, 0, 0, 774, 0, 775, 774, 776, 773, + 0, 776, 777, 775, 774, 776, 777, 775, 0, 0, + 0, 776, 777, 775, 0, 0, 778, 0, 775, 0, + 778, 776, 777, 775, 778, 776, 778, 0, 776, 777, + 0, 0, 776, 777, 0, 0, 778, 0, 776, 777, + 0, 0, 0, 778, 0, 780, 0, 778, 776, 777, + 779, 778, 779, 778, 780, 781, 780, 779, 0, 781, + 782, 780, 779, 778, 782, 781, 780, 0, 0, 0, + + 782, 0, 780, 0, 0, 781, 0, 779, 0, 779, + 782, 780, 781, 780, 779, 0, 781, 782, 780, 779, + 783, 782, 781, 780, 783, 785, 784, 782, 784, 785, + 783, 0, 781, 784, 0, 785, 0, 782, 784, 786, + 783, 0, 0, 786, 787, 785, 0, 783, 787, 786, + 0, 783, 785, 784, 787, 784, 785, 783, 0, 786, + 784, 0, 785, 0, 787, 784, 786, 783, 0, 788, + 786, 787, 785, 788, 789, 787, 786, 0, 789, 788, + 0, 787, 0, 790, 789, 0, 786, 790, 0, 788, + 791, 787, 791, 790, 789, 0, 788, 791, 0, 0, + + 788, 789, 791, 790, 0, 789, 788, 0, 0, 0, + 790, 789, 0, 0, 790, 0, 788, 791, 0, 791, + 790, 789, 0, 0, 791, 792, 793, 792, 793, 791, + 790, 0, 792, 793, 0, 794, 0, 792, 793, 0, + 0, 0, 0, 0, 794, 0, 794, 0, 0, 0, + 0, 794, 792, 793, 792, 793, 794, 0, 0, 792, + 793, 0, 794, 0, 792, 793, 0, 795, 796, 795, + 796, 794, 0, 794, 795, 796, 795, 0, 794, 795, + 796, 0, 0, 794, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 795, 796, 795, 796, 798, 0, + + 0, 795, 796, 795, 0, 0, 795, 796, 797, 798, + 797, 798, 0, 0, 0, 797, 798, 797, 0, 0, + 797, 798, 799, 0, 799, 798, 0, 0, 0, 799, + 799, 0, 0, 0, 799, 797, 798, 797, 798, 0, + 0, 0, 797, 798, 797, 0, 0, 797, 798, 799, + 0, 799, 0, 800, 0, 0, 799, 799, 800, 801, + 800, 799, 803, 801, 802, 800, 803, 802, 802, 801, + 800, 0, 803, 0, 802, 0, 0, 0, 0, 801, + 800, 0, 803, 0, 802, 800, 801, 800, 0, 803, + 801, 802, 800, 803, 802, 802, 801, 800, 804, 803, + + 805, 802, 804, 806, 805, 0, 801, 806, 804, 803, + 805, 802, 807, 806, 804, 0, 807, 0, 804, 0, + 805, 0, 807, 806, 0, 804, 808, 805, 808, 804, + 806, 805, 807, 808, 806, 804, 0, 805, 808, 807, + 806, 804, 0, 807, 911, 804, 911, 805, 0, 807, + 806, 911, 0, 808, 0, 808, 911, 0, 0, 807, + 808, 0, 912, 0, 912, 808, 0, 0, 913, 912, + 913, 911, 0, 911, 912, 913, 0, 0, 911, 0, + 913, 0, 913, 911, 0, 0, 914, 0, 914, 912, + 915, 912, 0, 914, 915, 913, 912, 913, 914, 0, + + 915, 912, 913, 0, 916, 0, 0, 913, 916, 913, + 915, 0, 917, 914, 916, 914, 917, 915, 0, 0, + 914, 915, 917, 0, 916, 914, 0, 915, 0, 0, + 918, 916, 917, 0, 918, 916, 0, 915, 919, 917, + 918, 916, 919, 917, 0, 918, 919, 0, 0, 917, + 918, 916, 919, 920, 920, 0, 0, 918, 920, 917, + 0, 918, 919, 0, 920, 919, 0, 918, 0, 919, + 0, 0, 918, 919, 920, 0, 921, 918, 921, 919, + 920, 920, 921, 0, 0, 920, 0, 0, 921, 919, + 922, 920, 922, 0, 0, 0, 0, 922, 921, 0, + + 0, 920, 922, 921, 923, 921, 923, 0, 0, 921, + 924, 923, 923, 0, 924, 921, 923, 922, 0, 922, + 924, 0, 925, 0, 922, 921, 925, 0, 0, 922, + 924, 923, 925, 923, 0, 0, 926, 924, 923, 923, + 926, 924, 925, 923, 0, 0, 926, 924, 927, 925, + 927, 0, 0, 925, 928, 927, 926, 924, 928, 925, + 927, 0, 0, 926, 928, 0, 929, 926, 0, 925, + 929, 0, 0, 926, 928, 927, 929, 927, 0, 0, + 930, 928, 927, 926, 930, 928, 929, 927, 930, 0, + 0, 928, 932, 929, 930, 0, 932, 929, 931, 0, + + 931, 928, 932, 929, 930, 931, 0, 930, 0, 0, + 931, 930, 932, 929, 933, 930, 934, 0, 933, 932, + 934, 930, 0, 932, 933, 931, 934, 931, 0, 932, + 0, 930, 931, 0, 933, 0, 934, 931, 935, 932, + 936, 933, 935, 934, 936, 933, 0, 934, 935, 0, + 936, 933, 937, 934, 937, 936, 0, 0, 935, 937, + 936, 933, 0, 934, 937, 935, 0, 936, 938, 935, + 939, 936, 938, 0, 939, 935, 0, 936, 938, 937, + 939, 937, 936, 0, 0, 935, 937, 936, 938, 0, + 939, 937, 940, 0, 941, 938, 940, 939, 941, 938, + + 0, 939, 940, 0, 941, 938, 0, 939, 0, 941, + 0, 0, 940, 0, 941, 938, 0, 939, 942, 940, + 0, 941, 942, 940, 0, 941, 0, 0, 942, 940, + 943, 941, 943, 942, 0, 0, 941, 943, 942, 940, + 0, 941, 943, 944, 945, 942, 945, 944, 946, 942, + 945, 0, 946, 944, 0, 942, 945, 943, 946, 943, + 942, 0, 0, 944, 943, 942, 945, 0, 946, 943, + 944, 945, 947, 945, 944, 946, 947, 945, 0, 946, + 944, 0, 947, 945, 948, 946, 0, 949, 948, 949, + 944, 949, 947, 945, 948, 946, 0, 949, 951, 947, + + 951, 0, 948, 947, 948, 951, 0, 949, 0, 947, + 951, 948, 0, 950, 949, 948, 949, 950, 949, 947, + 0, 948, 0, 950, 949, 951, 0, 951, 950, 948, + 0, 948, 951, 950, 949, 0, 952, 951, 952, 954, + 950, 954, 953, 952, 950, 0, 954, 953, 952, 953, + 950, 954, 0, 0, 953, 950, 0, 0, 0, 953, + 950, 0, 0, 952, 0, 952, 954, 0, 954, 953, + 952, 0, 0, 954, 953, 952, 953, 955, 954, 955, + 956, 953, 956, 957, 955, 957, 953, 956, 956, 955, + 957, 958, 956, 958, 0, 957, 0, 0, 958, 0, + + 0, 0, 0, 958, 955, 0, 955, 956, 0, 956, + 957, 955, 957, 0, 956, 956, 955, 957, 958, 956, + 958, 959, 957, 959, 0, 958, 0, 960, 959, 959, + 958, 960, 961, 959, 961, 0, 0, 960, 0, 961, + 0, 0, 961, 0, 961, 0, 0, 960, 959, 0, + 959, 0, 0, 0, 960, 959, 959, 0, 960, 961, + 959, 961, 0, 962, 960, 962, 961, 0, 0, 961, + 962, 961, 0, 0, 960, 962, 963, 964, 963, 964, + 0, 0, 0, 963, 964, 0, 0, 0, 963, 964, + 962, 0, 962, 0, 0, 0, 0, 962, 0, 965, + + 0, 0, 962, 963, 964, 963, 964, 965, 0, 965, + 963, 964, 0, 0, 965, 963, 964, 0, 966, 965, + 966, 967, 0, 967, 0, 966, 965, 0, 967, 0, + 966, 0, 0, 967, 965, 0, 965, 0, 0, 968, + 0, 965, 0, 968, 0, 966, 965, 966, 967, 968, + 967, 969, 966, 969, 970, 967, 0, 966, 969, 968, + 967, 0, 0, 969, 0, 970, 968, 970, 0, 0, + 968, 0, 970, 0, 0, 0, 968, 970, 969, 0, + 969, 970, 0, 0, 0, 969, 968, 0, 0, 971, + 969, 971, 970, 0, 970, 0, 971, 971, 973, 970, + + 973, 971, 0, 972, 970, 973, 973, 972, 0, 972, + 973, 0, 0, 0, 972, 0, 971, 0, 971, 972, + 0, 0, 0, 971, 971, 973, 0, 973, 971, 0, + 972, 0, 973, 973, 972, 0, 972, 973, 974, 0, + 974, 972, 975, 976, 975, 974, 972, 976, 0, 975, + 974, 0, 0, 976, 975, 0, 0, 0, 977, 0, + 0, 0, 977, 976, 0, 974, 0, 974, 977, 975, + 976, 975, 974, 977, 976, 0, 975, 974, 977, 0, + 976, 975, 978, 978, 979, 977, 0, 978, 979, 977, + 976, 0, 0, 978, 979, 977, 0, 979, 0, 0, + + 977, 0, 0, 978, 979, 977, 0, 0, 0, 978, + 978, 979, 980, 981, 978, 979, 980, 981, 0, 0, + 978, 979, 980, 981, 979, 980, 0, 0, 0, 0, + 978, 979, 980, 981, 0, 0, 0, 982, 983, 980, + 981, 982, 983, 980, 981, 0, 0, 982, 983, 980, + 981, 984, 980, 0, 0, 984, 0, 982, 983, 980, + 981, 984, 0, 985, 982, 983, 986, 985, 982, 983, + 986, 984, 0, 985, 982, 983, 986, 0, 984, 0, + 0, 0, 984, 985, 982, 983, 986, 987, 984, 0, + 985, 987, 0, 986, 985, 987, 0, 986, 984, 0, + + 985, 987, 0, 986, 0, 0, 0, 0, 0, 0, + 985, 987, 988, 986, 987, 0, 988, 990, 987, 0, + 988, 990, 987, 0, 989, 989, 988, 990, 987, 989, + 991, 0, 990, 0, 991, 989, 988, 990, 987, 988, + 991, 0, 0, 988, 990, 989, 0, 988, 990, 0, + 991, 989, 989, 988, 990, 0, 989, 991, 0, 990, + 0, 991, 989, 988, 990, 992, 0, 991, 0, 992, + 0, 0, 989, 993, 993, 992, 0, 991, 993, 994, + 0, 0, 0, 994, 993, 992, 0, 994, 0, 0, + 0, 0, 992, 994, 993, 0, 992, 995, 0, 995, + + 993, 993, 992, 994, 995, 993, 994, 0, 0, 995, + 994, 993, 992, 0, 994, 0, 996, 0, 996, 0, + 994, 993, 996, 996, 995, 997, 995, 997, 996, 0, + 994, 995, 997, 997, 0, 998, 995, 997, 0, 0, + 0, 0, 0, 996, 0, 996, 998, 0, 998, 996, + 996, 0, 997, 998, 997, 996, 999, 0, 998, 997, + 997, 0, 998, 0, 997, 0, 0, 999, 0, 999, + 1000, 0, 1000, 998, 999, 998, 0, 1000, 0, 999, + 998, 0, 1000, 999, 0, 998, 1001, 0, 1001, 0, + 0, 0, 0, 1001, 999, 0, 999, 1000, 1001, 1000, + + 0, 999, 0, 0, 1000, 0, 999, 1002, 0, 1000, + 0, 1002, 0, 1001, 0, 1001, 0, 1002, 1003, 1003, + 1001, 0, 1004, 1003, 0, 1001, 1004, 1002, 0, 1003, + 0, 1005, 1004, 0, 1002, 1005, 0, 0, 1002, 1003, + 0, 1005, 1004, 0, 1002, 1003, 1003, 0, 0, 1004, + 1003, 1005, 0, 1004, 1002, 0, 1003, 0, 1005, 1004, + 0, 1007, 1005, 1006, 0, 1006, 1003, 0, 1005, 1004, + 1006, 0, 1007, 0, 1007, 1006, 0, 0, 1005, 1007, + 1008, 0, 0, 0, 1007, 0, 0, 0, 1007, 0, + 1006, 1008, 1006, 1008, 0, 0, 0, 1006, 1008, 1007, + + 0, 1007, 1006, 1008, 0, 0, 1007, 1008, 0, 1088, + 1009, 1007, 1009, 1088, 1010, 0, 1010, 1009, 1008, 1088, + 1008, 1010, 1009, 0, 0, 1008, 1010, 0, 0, 1088, + 1008, 0, 0, 0, 0, 0, 1088, 1009, 0, 1009, + 1088, 1010, 0, 1010, 1009, 0, 1088, 1089, 1010, 1009, + 0, 1089, 1090, 1010, 1090, 0, 1088, 1089, 1091, 1090, + 1091, 1092, 1093, 1092, 1090, 1091, 1093, 1089, 1092, 0, + 1091, 0, 1093, 1092, 1089, 0, 0, 0, 1089, 1090, + 0, 1090, 1093, 0, 1089, 1091, 1090, 1091, 1092, 1093, + 1092, 1090, 1091, 1093, 1089, 1092, 0, 1091, 1094, 1093, + + 1092, 0, 1094, 1095, 1096, 1095, 1096, 0, 1094, 1093, + 1095, 1096, 1097, 1094, 1097, 1095, 1096, 0, 1094, 1097, + 0, 0, 0, 0, 1097, 1094, 0, 0, 0, 1094, + 1095, 1096, 1095, 1096, 0, 1094, 0, 1095, 1096, 1097, + 1094, 1097, 1095, 1096, 0, 1094, 1097, 1098, 1099, 1098, + 1099, 1097, 0, 0, 1098, 1099, 1099, 0, 0, 1098, + 1099, 1100, 1100, 1100, 0, 0, 0, 0, 1100, 0, + 0, 0, 0, 1100, 1098, 1099, 1098, 1099, 0, 0, + 0, 1098, 1099, 1099, 0, 1101, 1098, 1099, 1100, 1100, + 1100, 1102, 0, 1102, 1101, 1100, 1101, 1103, 1102, 1103, + + 1100, 1101, 0, 1102, 1103, 1103, 1101, 0, 0, 1103, + 0, 0, 1101, 0, 0, 1104, 0, 1104, 1102, 0, + 1102, 1101, 1104, 1101, 1103, 1102, 1103, 1104, 1101, 0, + 1102, 1103, 1103, 1101, 0, 0, 1103, 0, 1105, 0, + 1105, 1106, 1104, 0, 1104, 1105, 1105, 0, 0, 1104, + 1105, 1106, 0, 1106, 1104, 0, 0, 1107, 1106, 1107, + 0, 0, 0, 1106, 1107, 1105, 0, 1105, 1106, 1107, + 0, 0, 1105, 1105, 0, 0, 0, 1105, 1106, 0, + 1106, 0, 0, 1108, 1107, 1106, 1107, 0, 0, 0, + 1106, 1107, 1108, 1109, 1108, 1109, 1107, 0, 0, 1108, + + 1109, 1110, 0, 1110, 1108, 1109, 0, 0, 1110, 0, + 1108, 0, 0, 1110, 0, 0, 0, 0, 0, 1108, + 1109, 1108, 1109, 0, 0, 0, 1108, 1109, 1110, 0, + 1110, 1108, 1109, 0, 1111, 1110, 1111, 1112, 1113, 1112, + 1110, 1111, 1113, 1115, 1112, 1115, 1111, 1114, 1113, 1112, + 1115, 1114, 0, 0, 0, 1115, 0, 1114, 1113, 0, + 0, 1111, 0, 1111, 1112, 1113, 1112, 1114, 1111, 1113, + 1115, 1112, 1115, 1111, 1114, 1113, 1112, 1115, 1114, 1116, + 0, 1116, 1115, 0, 1114, 1113, 1116, 1116, 1118, 1117, + 1118, 1116, 0, 1117, 1114, 1118, 0, 0, 0, 1117, + + 1118, 0, 0, 0, 0, 0, 1116, 0, 1116, 1117, + 0, 0, 0, 1116, 1116, 1118, 1117, 1118, 1116, 0, + 1117, 1119, 1118, 1119, 0, 0, 1117, 1118, 1119, 0, + 1120, 0, 1120, 1119, 0, 0, 1117, 1120, 0, 1121, + 0, 1121, 1120, 0, 0, 0, 1121, 0, 1119, 0, + 1119, 1121, 0, 0, 0, 1119, 0, 1120, 0, 1120, + 1119, 0, 0, 1122, 1120, 1122, 1121, 0, 1121, 1120, + 1122, 0, 1123, 1121, 1123, 1122, 0, 0, 1121, 1123, + 0, 1124, 0, 1124, 1123, 1126, 0, 0, 1124, 1126, + 1122, 0, 1122, 1124, 0, 1126, 0, 1122, 0, 1123, + + 0, 1123, 1122, 0, 0, 1126, 1123, 1125, 1124, 1125, + 1124, 1123, 1126, 1125, 1125, 1124, 1126, 0, 0, 1125, + 1124, 1127, 1126, 1128, 0, 1127, 0, 1128, 0, 1127, + 0, 0, 1126, 1128, 1125, 1127, 1125, 1130, 0, 1130, + 1125, 1125, 0, 1128, 1130, 1127, 1125, 1129, 1127, 1130, + 1128, 1129, 1127, 0, 1128, 0, 1127, 1129, 0, 0, + 1128, 1131, 1127, 1131, 1130, 0, 1130, 1129, 1131, 0, + 1128, 1130, 1127, 1131, 1129, 1132, 1130, 1132, 1129, 1133, + 0, 1133, 1132, 0, 1129, 0, 1133, 1132, 1131, 0, + 1131, 1133, 1134, 0, 1129, 1131, 0, 0, 0, 0, + + 1131, 0, 1132, 1134, 1132, 1134, 1133, 0, 1133, 1132, + 1134, 0, 0, 1133, 1132, 1134, 1137, 0, 1133, 1134, + 1137, 1135, 0, 1135, 0, 0, 1137, 1136, 1135, 1136, + 1134, 0, 1134, 1135, 1136, 1136, 1137, 1134, 0, 1136, + 0, 0, 1134, 1137, 0, 0, 0, 1137, 1135, 0, + 1135, 0, 0, 1137, 1136, 1135, 1136, 0, 0, 0, + 1135, 1136, 1136, 1137, 1138, 1139, 1136, 1140, 1138, 1139, + 0, 1140, 0, 0, 1138, 1139, 1141, 1140, 1141, 0, + 0, 0, 0, 1141, 1138, 1139, 0, 1140, 1141, 0, + 0, 1138, 1139, 0, 1140, 1138, 1139, 0, 1140, 0, + + 0, 1138, 1139, 1141, 1140, 1141, 1142, 0, 1142, 0, + 1141, 1138, 1139, 1142, 1140, 1141, 1143, 0, 1142, 0, + 1144, 0, 0, 0, 0, 1143, 0, 1143, 0, 1144, + 0, 1144, 1143, 1142, 0, 1142, 1144, 1143, 0, 0, + 1142, 1144, 0, 1143, 0, 1142, 0, 1144, 1145, 0, + 1145, 0, 1143, 0, 1143, 1145, 1144, 0, 1144, 1143, + 1145, 0, 0, 1144, 1143, 0, 0, 1146, 1144, 1146, + 0, 1147, 0, 1147, 1146, 1145, 0, 1145, 1147, 1146, + 0, 0, 1145, 1147, 0, 0, 0, 1145, 0, 0, + 1148, 0, 1148, 0, 1146, 0, 1146, 1148, 1147, 0, + + 1147, 1146, 1148, 0, 0, 1147, 1146, 0, 0, 1149, + 1147, 1149, 0, 1150, 0, 1150, 1149, 1148, 0, 1148, + 1150, 1149, 0, 0, 1148, 1150, 0, 0, 0, 1148, + 0, 0, 1151, 0, 1151, 0, 1149, 0, 1149, 1151, + 1150, 0, 1150, 1149, 1151, 1152, 0, 1150, 1149, 0, + 0, 1153, 1150, 1157, 0, 1157, 1152, 0, 1152, 1151, + 1157, 1151, 1153, 1152, 1153, 1157, 1151, 0, 1152, 1153, + 0, 1151, 1152, 0, 1153, 0, 0, 1154, 1153, 0, + 1157, 0, 1157, 1152, 0, 1152, 1154, 1157, 1154, 1153, + 1152, 1153, 1157, 1154, 0, 1152, 1153, 0, 1154, 0, + + 1155, 1153, 1155, 0, 1154, 0, 1156, 1155, 1155, 0, + 0, 0, 1155, 1154, 1156, 1154, 1156, 0, 0, 0, + 1154, 1156, 0, 0, 0, 1154, 1156, 1155, 0, 1155, + 1158, 0, 1158, 1156, 1155, 1155, 0, 1158, 1159, 1155, + 1159, 1156, 1158, 1156, 1160, 1159, 1160, 0, 1156, 0, + 1159, 1160, 0, 1156, 0, 0, 1160, 1158, 0, 1158, + 0, 0, 0, 0, 1158, 1159, 0, 1159, 1161, 1158, + 1161, 1160, 1159, 1160, 1161, 1161, 0, 1159, 1160, 1162, + 1161, 1162, 1211, 1160, 1211, 0, 1162, 0, 0, 1211, + 0, 1162, 0, 0, 1211, 1161, 0, 1161, 1212, 0, + + 1212, 1161, 1161, 0, 0, 1212, 1162, 1161, 1162, 1211, + 1212, 1211, 1213, 1162, 1213, 0, 1211, 0, 1162, 1213, + 0, 1211, 0, 0, 1213, 1212, 1214, 1212, 1214, 0, + 1215, 0, 1212, 1214, 1215, 0, 0, 1212, 1214, 1213, + 1215, 1213, 0, 0, 1216, 0, 1213, 0, 1216, 0, + 1215, 1213, 1217, 1214, 1216, 1214, 1217, 1215, 0, 0, + 1214, 1215, 1217, 0, 1216, 1214, 0, 1215, 1218, 1218, + 0, 1216, 1217, 0, 1219, 1216, 0, 1215, 1219, 1217, + 0, 1216, 0, 1217, 1219, 0, 0, 0, 1220, 1217, + 0, 1216, 1220, 1218, 1219, 0, 1220, 1218, 0, 1217, + + 0, 1219, 1220, 1218, 0, 1219, 1221, 0, 0, 0, + 1221, 1219, 1220, 1218, 0, 1220, 1221, 0, 1222, 1220, + 1218, 1219, 1222, 1220, 1218, 0, 1221, 0, 1222, 1220, + 1218, 1223, 1224, 1221, 0, 1223, 1224, 1221, 1222, 1220, + 1218, 1223, 1224, 1221, 1227, 1222, 1225, 0, 1227, 1222, + 1225, 1223, 1224, 1221, 1227, 1222, 1225, 0, 1223, 1224, + 0, 1225, 1223, 1224, 1227, 1222, 1225, 0, 1223, 1224, + 1226, 1227, 1226, 1225, 1226, 1227, 0, 1225, 1223, 1224, + 1226, 1227, 1228, 1225, 0, 1229, 1228, 0, 1225, 1229, + 1226, 1227, 1228, 1225, 0, 1229, 1230, 1226, 1230, 1226, + + 0, 1226, 1228, 1230, 0, 1229, 0, 1226, 1230, 1228, + 0, 0, 1229, 1228, 0, 0, 1229, 1226, 0, 1228, + 0, 0, 1229, 1230, 1231, 1230, 1231, 0, 0, 1228, + 1230, 1231, 1229, 0, 1233, 1230, 1231, 1232, 0, 1232, + 1234, 0, 1234, 1233, 1232, 1233, 0, 1234, 0, 1232, + 1233, 1231, 1234, 1231, 0, 1233, 0, 0, 1231, 0, + 0, 1233, 0, 1231, 1232, 0, 1232, 1234, 0, 1234, + 1233, 1232, 1233, 1235, 1234, 1235, 1232, 1233, 0, 1234, + 1235, 1236, 1233, 1236, 1237, 1235, 1237, 0, 1236, 0, + 1237, 1237, 0, 1236, 1238, 0, 1237, 0, 1238, 1239, + + 1235, 0, 1235, 1239, 1238, 0, 0, 1235, 1236, 1239, + 1236, 1237, 1235, 1237, 1238, 1236, 0, 1237, 1237, 1239, + 1236, 1238, 1240, 1237, 1240, 1238, 1239, 0, 0, 1240, + 1239, 1238, 0, 1241, 1240, 1241, 1239, 0, 0, 0, + 1241, 1238, 0, 0, 0, 1241, 1239, 0, 0, 1240, + 0, 1240, 1242, 0, 1242, 0, 1240, 1243, 0, 1242, + 1241, 1240, 1241, 1244, 1242, 1244, 1243, 1241, 1243, 0, + 1244, 1244, 1241, 1243, 0, 1244, 0, 0, 1243, 1242, + 0, 1242, 0, 0, 1243, 0, 1242, 0, 0, 0, + 1244, 1242, 1244, 1243, 0, 1243, 0, 1244, 1244, 0, + + 1243, 0, 1244, 1245, 1245, 1243, 1245, 1246, 1247, 1246, + 1247, 1245, 0, 0, 1246, 1247, 1245, 0, 0, 1246, + 1247, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1245, 1245, 0, 1245, 1246, 1247, 1246, 1247, 1245, 0, + 0, 1246, 1247, 1245, 0, 0, 1246, 1247, 1248, 0, + 1248, 1249, 0, 1249, 0, 1248, 1248, 0, 1249, 1250, + 1248, 1250, 0, 1249, 0, 1250, 1250, 1251, 1251, 1251, + 0, 1250, 0, 0, 1251, 1248, 0, 1248, 1249, 1251, + 1249, 0, 1248, 1248, 0, 1249, 1250, 1248, 1250, 0, + 1249, 0, 1250, 1250, 1251, 1251, 1251, 1252, 1250, 1252, + + 0, 1251, 0, 1253, 1252, 1252, 1251, 1253, 1254, 1252, + 0, 0, 1254, 1253, 0, 0, 0, 1255, 1254, 0, + 0, 1255, 0, 1253, 1252, 0, 1252, 1255, 1254, 0, + 1253, 1252, 1252, 0, 1253, 1254, 1252, 1255, 0, 1254, + 1253, 0, 1256, 1283, 1255, 1254, 1256, 1283, 1255, 0, + 1253, 0, 1256, 1283, 1255, 1254, 1283, 1285, 0, 0, + 0, 1285, 1256, 1283, 1255, 0, 0, 1285, 0, 1256, + 1283, 1286, 1287, 1256, 1283, 1286, 1287, 1285, 0, 1256, + 1283, 1286, 1287, 1283, 1285, 1287, 1286, 0, 1285, 1256, + 1283, 1286, 1287, 0, 1285, 0, 1288, 1289, 1286, 1287, + + 1288, 1289, 1286, 1287, 1285, 0, 1288, 1289, 1286, 1287, + 1290, 0, 1287, 1286, 1290, 0, 1288, 1289, 1286, 1287, + 1290, 0, 1293, 1288, 1289, 0, 1293, 1288, 1289, 0, + 1290, 0, 1293, 1288, 1289, 1292, 1291, 1290, 1291, 1292, + 1291, 1290, 1293, 1288, 1289, 1292, 1291, 1290, 1294, 1293, + 1292, 0, 1294, 1293, 0, 1292, 1291, 1290, 1294, 1293, + 0, 0, 1292, 1291, 0, 1291, 1292, 1291, 1294, 1293, + 0, 0, 1292, 1291, 1295, 1294, 0, 1292, 1295, 1294, + 0, 0, 1292, 1291, 1295, 1294, 1296, 1295, 1296, 0, + 0, 0, 1297, 1296, 1295, 1294, 1298, 1297, 1296, 1297, + + 1298, 1295, 0, 0, 1297, 1295, 1298, 0, 1299, 1297, + 0, 1295, 1299, 1296, 1295, 1296, 1298, 0, 1299, 1297, + 1296, 1295, 0, 1298, 1297, 1296, 1297, 1298, 1299, 0, + 1300, 1297, 0, 1298, 1300, 1299, 1297, 0, 1301, 1299, + 1300, 0, 1301, 1298, 0, 1299, 0, 0, 1301, 0, + 1300, 0, 1302, 0, 0, 1299, 1302, 1300, 1301, 0, + 1303, 1300, 1302, 0, 1303, 1301, 0, 1300, 0, 1301, + 1303, 1303, 1302, 0, 1304, 1301, 0, 1300, 1304, 1302, + 1303, 0, 1305, 1302, 1304, 1301, 1305, 1303, 0, 1302, + 0, 1303, 1305, 0, 1304, 1306, 1306, 1303, 1303, 1302, + + 1306, 1304, 1305, 1323, 1323, 1304, 1306, 1303, 0, 1305, + 1325, 1304, 0, 1305, 1325, 0, 1306, 0, 0, 1305, + 1325, 1304, 1306, 1306, 0, 0, 0, 1306, 1323, 1305, + 1325, 0, 1323, 1306, 0, 0, 1326, 1325, 1323, 0, + 1326, 1325, 0, 1306, 0, 0, 1326, 1325, 1323, 0, + 1327, 0, 0, 0, 1327, 1323, 1326, 1325, 1328, 1323, + 1327, 0, 1328, 1326, 1329, 1323, 1329, 1326, 1328, 0, + 1327, 1329, 1330, 1326, 1330, 1323, 1329, 1327, 1328, 1330, + 0, 1327, 0, 1326, 1330, 1328, 0, 1327, 0, 1328, + 0, 1329, 0, 1329, 0, 1328, 0, 1327, 1329, 1330, + + 1331, 1330, 1331, 1329, 0, 1328, 1330, 1331, 1332, 0, + 1332, 1330, 1331, 0, 1333, 1332, 1333, 0, 0, 0, + 1332, 1333, 0, 0, 0, 0, 1333, 1331, 0, 1331, + 0, 0, 0, 0, 1331, 1332, 0, 1332, 1334, 1331, + 1334, 1333, 1332, 1333, 0, 1334, 0, 1332, 1333, 0, + 1334, 1335, 0, 1333, 1336, 1335, 1347, 0, 1336, 1348, + 1347, 1335, 0, 1348, 1336, 1334, 1347, 1334, 0, 1348, + 0, 1335, 1334, 0, 1336, 0, 1347, 1334, 1335, 1348, + 0, 1336, 1335, 1347, 0, 1336, 1348, 1347, 1335, 0, + 1348, 1336, 0, 1347, 0, 1349, 1348, 0, 1335, 1349, + + 1350, 1336, 1350, 1347, 0, 1349, 1348, 1350, 0, 1358, + 0, 1358, 1350, 0, 0, 1349, 1358, 0, 0, 0, + 0, 1358, 1349, 0, 0, 0, 1349, 1350, 0, 1350, + 0, 0, 1349, 0, 1350, 0, 1358, 0, 1358, 1350, + 0, 0, 1349, 1358, 0, 0, 0, 0, 1358, 1390, + 1390, 1390, 1390, 1390, 1391, 0, 0, 1391, 1391, 1393, + 1393, 1393, 0, 1393, 1394, 0, 1394, 1394, 1394, 1395, + 0, 1395, 1395, 1395, 1396, 0, 1396, 1396, 1396, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389 } ; /* The intent behind this definition is that it'll catch @@ -3114,7 +3148,7 @@ static const flex_int16_t yy_chk[9032] = static thread_local std::stringstream strbuf; -#line 3117 "flex_lexer.cpp" +#line 3151 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -3128,7 +3162,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 3131 "flex_lexer.cpp" +#line 3165 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -3415,7 +3449,7 @@ YY_DECL #line 57 "flex_lexer.l" -#line 3418 "flex_lexer.cpp" +#line 3452 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3442,13 +3476,13 @@ YY_DECL 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 >= 1368 ) + if ( yy_current_state >= 1390 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1367 ); + while ( yy_current_state != 1389 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -3668,701 +3702,711 @@ TOKEN(DELETE) case 40: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(DELIMITER) YY_BREAK case 41: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(DESC) +TOKEN(DELTA) YY_BREAK case 42: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(DESCRIBE) +TOKEN(DESC) YY_BREAK case 43: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(DIRECT) +TOKEN(DESCRIBE) YY_BREAK case 44: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(DISTINCT) +TOKEN(DIRECT) YY_BREAK case 45: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(DOUBLE) +TOKEN(DISTINCT) YY_BREAK case 46: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(DROP) +TOKEN(DOUBLE) YY_BREAK case 47: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(DROP) YY_BREAK case 48: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(ENCODING) +TOKEN(ELSE) YY_BREAK case 49: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(END) +TOKEN(ENCODING) YY_BREAK case 50: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(ESCAPE) +TOKEN(END) YY_BREAK case 51: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(EXCEPT) +TOKEN(ESCAPE) YY_BREAK case 52: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(EXECUTE) +TOKEN(EXCEPT) YY_BREAK case 53: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(EXISTS) +TOKEN(EXECUTE) YY_BREAK case 54: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(EXPLAIN) +TOKEN(EXISTS) YY_BREAK case 55: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(EXTRACT) +TOKEN(EXPLAIN) YY_BREAK case 56: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(FALSE) +TOKEN(EXTRACT) YY_BREAK case 57: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(FILE) +TOKEN(FALSE) YY_BREAK case 58: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(FLOAT) +TOKEN(FILE) YY_BREAK case 59: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(FOLLOWING) +TOKEN(FLOAT) YY_BREAK case 60: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(FOR) +TOKEN(FOLLOWING) YY_BREAK case 61: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(FOREIGN) +TOKEN(FOR) YY_BREAK case 62: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(FORMAT) +TOKEN(FOREIGN) YY_BREAK case 63: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(FROM) +TOKEN(FORMAT) YY_BREAK case 64: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(FULL) +TOKEN(FROM) YY_BREAK case 65: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(FULL) YY_BREAK case 66: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(GLOBAL) YY_BREAK case 67: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(GROUPS) +TOKEN(GROUP) YY_BREAK case 68: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(HASH) +TOKEN(GROUPS) YY_BREAK case 69: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(HASH) YY_BREAK case 70: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(HINT) +TOKEN(HAVING) YY_BREAK case 71: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(HOUR) +TOKEN(HINT) YY_BREAK case 72: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(HOURS) +TOKEN(HOUR) YY_BREAK case 73: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(IF) +TOKEN(HOURS) YY_BREAK case 74: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(IF) YY_BREAK case 75: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(ILIKE) YY_BREAK case 76: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(IN) +TOKEN(IMPORT) YY_BREAK case 77: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(IN) YY_BREAK case 78: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 79: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(INNER) YY_BREAK case 80: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(INT) +TOKEN(INSERT) YY_BREAK case 81: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(INTEGER) +TOKEN(INT) YY_BREAK case 82: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(INTERSECT) +TOKEN(INTEGER) YY_BREAK case 83: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(INTERVAL) +TOKEN(INTERSECT) YY_BREAK case 84: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(INTO) +TOKEN(INTERVAL) YY_BREAK case 85: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(IS) +TOKEN(INTO) YY_BREAK case 86: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(IS) YY_BREAK case 87: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(ISNULL) YY_BREAK case 88: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(KEY) +TOKEN(JOIN) YY_BREAK case 89: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(KEY) YY_BREAK case 90: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(LEFT) YY_BREAK case 91: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(LIKE) YY_BREAK case 92: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LIMIT) YY_BREAK case 93: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LOAD) YY_BREAK case 94: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(LOCKED) +TOKEN(LOCAL) YY_BREAK case 95: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(LONG) +TOKEN(LOCKED) YY_BREAK case 96: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LONG) YY_BREAK case 97: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 98: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(MINUTE) +TOKEN(MINUS) YY_BREAK case 99: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(MINUTES) +TOKEN(MINUTE) YY_BREAK case 100: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(MONTH) +TOKEN(MINUTES) YY_BREAK case 101: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(MONTHS) +TOKEN(MONTH) YY_BREAK case 102: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(NATURAL) +TOKEN(MONTHS) YY_BREAK case 103: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NO) +TOKEN(NATURAL) YY_BREAK case 104: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(NOT) +TOKEN(NO) YY_BREAK case 105: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(NOWAIT) +TOKEN(NOT) YY_BREAK case 106: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(NULL) +TOKEN(NOWAIT) YY_BREAK case 107: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(NVARCHAR) +TOKEN(NULL) YY_BREAK case 108: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(OF) +TOKEN(NVARCHAR) YY_BREAK case 109: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(OFF) +TOKEN(OF) YY_BREAK case 110: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(OFF) YY_BREAK case 111: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(ON) +TOKEN(OFFSET) YY_BREAK case 112: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(OR) +TOKEN(ON) YY_BREAK case 113: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(OR) YY_BREAK case 114: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 115: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(OVER) +TOKEN(OUTER) YY_BREAK case 116: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(PARAMETERS) +TOKEN(OVER) YY_BREAK case 117: YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(PARTITION) +TOKEN(PARAMETERS) YY_BREAK case 118: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(PARTITION) YY_BREAK case 119: YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(PRECEDING) +TOKEN(PLAN) YY_BREAK case 120: YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(PREPARE) +TOKEN(PRECEDING) YY_BREAK case 121: YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(PRIMARY) +TOKEN(PREPARE) YY_BREAK case 122: YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(RANGE) +TOKEN(PRIMARY) YY_BREAK case 123: YY_RULE_SETUP #line 183 "flex_lexer.l" -TOKEN(REAL) +TOKEN(QUOTE) YY_BREAK case 124: YY_RULE_SETUP #line 184 "flex_lexer.l" -TOKEN(REFERENCES) +TOKEN(RANGE) YY_BREAK case 125: YY_RULE_SETUP #line 185 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(REAL) YY_BREAK case 126: YY_RULE_SETUP #line 186 "flex_lexer.l" -TOKEN(RESTRICT) +TOKEN(REFERENCES) YY_BREAK case 127: YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(RENAME) YY_BREAK case 128: YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(ROLLBACK) +TOKEN(RESTRICT) YY_BREAK case 129: YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(ROWS) +TOKEN(RIGHT) YY_BREAK case 130: YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(ROLLBACK) YY_BREAK case 131: YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(SCHEMAS) +TOKEN(ROWS) YY_BREAK case 132: YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(SECOND) +TOKEN(SCHEMA) YY_BREAK case 133: YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(SECONDS) +TOKEN(SCHEMAS) YY_BREAK case 134: YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(SECOND) YY_BREAK case 135: YY_RULE_SETUP #line 195 "flex_lexer.l" -TOKEN(SET) +TOKEN(SECONDS) YY_BREAK case 136: YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(SHARE) +TOKEN(SELECT) YY_BREAK case 137: YY_RULE_SETUP #line 197 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(SET) YY_BREAK case 138: YY_RULE_SETUP #line 198 "flex_lexer.l" -TOKEN(SKIP) +TOKEN(SHARE) YY_BREAK case 139: YY_RULE_SETUP #line 199 "flex_lexer.l" -TOKEN(SMALLINT) +TOKEN(SHOW) YY_BREAK case 140: YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(SKIP) YY_BREAK case 141: YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(SPATIAL) +TOKEN(SMALLINT) YY_BREAK case 142: YY_RULE_SETUP #line 202 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(SORTED) YY_BREAK case 143: YY_RULE_SETUP #line 203 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(SPATIAL) YY_BREAK case 144: YY_RULE_SETUP #line 204 "flex_lexer.l" -TOKEN(TEMPORARY) +TOKEN(TABLE) YY_BREAK case 145: YY_RULE_SETUP #line 205 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(TABLES) YY_BREAK case 146: YY_RULE_SETUP #line 206 "flex_lexer.l" -TOKEN(THEN) +TOKEN(TEMPORARY) YY_BREAK case 147: YY_RULE_SETUP #line 207 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TEXT) YY_BREAK case 148: YY_RULE_SETUP #line 208 "flex_lexer.l" -TOKEN(TIMESTAMP) +TOKEN(THEN) YY_BREAK case 149: YY_RULE_SETUP #line 209 "flex_lexer.l" -TOKEN(TO) +TOKEN(TIME) YY_BREAK case 150: YY_RULE_SETUP #line 210 "flex_lexer.l" -TOKEN(TOP) +TOKEN(TIMESTAMP) YY_BREAK case 151: YY_RULE_SETUP #line 211 "flex_lexer.l" -TOKEN(TRANSACTION) +TOKEN(TO) YY_BREAK case 152: YY_RULE_SETUP #line 212 "flex_lexer.l" -TOKEN(TRUE) +TOKEN(TOP) YY_BREAK case 153: YY_RULE_SETUP #line 213 "flex_lexer.l" -TOKEN(TRUNCATE) +TOKEN(TRANSACTION) YY_BREAK case 154: YY_RULE_SETUP #line 214 "flex_lexer.l" -TOKEN(UNBOUNDED) +TOKEN(TRUE) YY_BREAK case 155: YY_RULE_SETUP #line 215 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TRUNCATE) YY_BREAK case 156: YY_RULE_SETUP #line 216 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(UNBOUNDED) YY_BREAK case 157: YY_RULE_SETUP #line 217 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(UNION) YY_BREAK case 158: YY_RULE_SETUP #line 218 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(UNIQUE) YY_BREAK case 159: YY_RULE_SETUP #line 219 "flex_lexer.l" -TOKEN(USING) +TOKEN(UNLOAD) YY_BREAK case 160: YY_RULE_SETUP #line 220 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(UPDATE) YY_BREAK case 161: YY_RULE_SETUP #line 221 "flex_lexer.l" -TOKEN(VARCHAR) +TOKEN(USING) YY_BREAK case 162: YY_RULE_SETUP #line 222 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(VALUES) YY_BREAK case 163: YY_RULE_SETUP #line 223 "flex_lexer.l" -TOKEN(VIRTUAL) +TOKEN(VARCHAR) YY_BREAK case 164: YY_RULE_SETUP #line 224 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(VIEW) YY_BREAK case 165: YY_RULE_SETUP #line 225 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(VIRTUAL) YY_BREAK case 166: YY_RULE_SETUP #line 226 "flex_lexer.l" -TOKEN(WITH) +TOKEN(WHEN) YY_BREAK case 167: YY_RULE_SETUP #line 227 "flex_lexer.l" -TOKEN(YEAR) +TOKEN(WHERE) YY_BREAK case 168: YY_RULE_SETUP #line 228 "flex_lexer.l" -TOKEN(YEARS) +TOKEN(WITH) YY_BREAK case 169: -/* rule 169 can match eol */ YY_RULE_SETUP -#line 230 "flex_lexer.l" -TOKEN(CURRENT_ROW) +#line 229 "flex_lexer.l" +TOKEN(YEAR) YY_BREAK case 170: -/* rule 170 can match eol */ YY_RULE_SETUP -#line 231 "flex_lexer.l" -TOKEN(CHARACTER_VARYING) +#line 230 "flex_lexer.l" +TOKEN(YEARS) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 171: +/* rule 171 can match eol */ YY_RULE_SETUP -#line 234 "flex_lexer.l" -TOKEN(EQUALS) +#line 232 "flex_lexer.l" +TOKEN(CURRENT_ROW) YY_BREAK case 172: +/* rule 172 can match eol */ YY_RULE_SETUP -#line 235 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 233 "flex_lexer.l" +TOKEN(CHARACTER_VARYING) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 173: YY_RULE_SETUP #line 236 "flex_lexer.l" -TOKEN(NOTEQUALS) +TOKEN(EQUALS) YY_BREAK case 174: YY_RULE_SETUP #line 237 "flex_lexer.l" -TOKEN(LESSEQ) +TOKEN(NOTEQUALS) YY_BREAK case 175: YY_RULE_SETUP #line 238 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(NOTEQUALS) YY_BREAK case 176: YY_RULE_SETUP #line 239 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(LESSEQ) YY_BREAK case 177: YY_RULE_SETUP -#line 241 "flex_lexer.l" -{ return yytext[0]; } +#line 240 "flex_lexer.l" +TOKEN(GREATEREQ) YY_BREAK case 178: -#line 244 "flex_lexer.l" +YY_RULE_SETUP +#line 241 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK case 179: YY_RULE_SETUP -#line 244 "flex_lexer.l" +#line 243 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 180: +#line 246 "flex_lexer.l" +case 181: +YY_RULE_SETUP +#line 246 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; @@ -4373,17 +4417,17 @@ YY_RULE_SETUP * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where * numeric_limits::lowest() == -numeric_limits::max(); */ -case 180: +case 182: YY_RULE_SETUP -#line 254 "flex_lexer.l" +#line 256 "flex_lexer.l" { yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK -case 181: +case 183: YY_RULE_SETUP -#line 259 "flex_lexer.l" +#line 261 "flex_lexer.l" { errno = 0; yylval->ival = strtoll(yytext, nullptr, 0); @@ -4394,59 +4438,59 @@ YY_RULE_SETUP return SQL_INTVAL; } YY_BREAK -case 182: +case 184: YY_RULE_SETUP -#line 269 "flex_lexer.l" +#line 271 "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 183: +case 185: YY_RULE_SETUP -#line 275 "flex_lexer.l" +#line 277 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 184: +case 186: YY_RULE_SETUP -#line 280 "flex_lexer.l" +#line 282 "flex_lexer.l" { BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 YY_BREAK -case 185: +case 187: YY_RULE_SETUP -#line 281 "flex_lexer.l" +#line 283 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 186: -/* rule 186 can match eol */ +case 188: +/* rule 188 can match eol */ YY_RULE_SETUP -#line 282 "flex_lexer.l" +#line 284 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 187: +case 189: YY_RULE_SETUP -#line 283 "flex_lexer.l" +#line 285 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 284 "flex_lexer.l" +#line 286 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 188: +case 190: YY_RULE_SETUP -#line 286 "flex_lexer.l" +#line 288 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 189: +case 191: YY_RULE_SETUP -#line 288 "flex_lexer.l" +#line 290 "flex_lexer.l" ECHO; YY_BREAK -#line 4449 "flex_lexer.cpp" +#line 4493 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -4747,7 +4791,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 >= 1368 ) + if ( yy_current_state >= 1390 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4776,11 +4820,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 >= 1368 ) + if ( yy_current_state >= 1390 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1367); + yy_is_jam = (yy_current_state == 1389); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -5603,7 +5647,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 288 "flex_lexer.l" +#line 290 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 40aa36a4..ce50204b 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -730,7 +730,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 288 "flex_lexer.l" +#line 290 "flex_lexer.l" #line 736 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index f4cd348c..de61ee7b 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -97,6 +97,7 @@ DEALLOCATE TOKEN(DEALLOCATE) DECIMAL TOKEN(DECIMAL) DEFAULT TOKEN(DEFAULT) DELETE TOKEN(DELETE) +DELIMITER TOKEN(DELIMITER) DELTA TOKEN(DELTA) DESC TOKEN(DESC) DESCRIBE TOKEN(DESCRIBE) @@ -179,6 +180,7 @@ PLAN TOKEN(PLAN) PRECEDING TOKEN(PRECEDING) PREPARE TOKEN(PREPARE) PRIMARY TOKEN(PRIMARY) +QUOTE TOKEN(QUOTE) RANGE TOKEN(RANGE) REAL TOKEN(REAL) REFERENCES TOKEN(REFERENCES) diff --git a/src/sql/ExportStatement.h b/src/sql/ExportStatement.h index 8212c5ca..206b38fc 100755 --- a/src/sql/ExportStatement.h +++ b/src/sql/ExportStatement.h @@ -18,6 +18,9 @@ struct ExportStatement : SQLStatement { char* tableName; SelectStatement* select; char* encoding; + char* delimiter; + char* null; + char* quote; }; } // namespace hsql diff --git a/src/sql/ImportExportOptions.h b/src/sql/ImportExportOptions.h index 4f51faad..b47c4578 100644 --- a/src/sql/ImportExportOptions.h +++ b/src/sql/ImportExportOptions.h @@ -19,6 +19,9 @@ struct ImportExportOptions { ImportType format; char* encoding; + char* delimiter; + char* null; + char* quote; }; } // namespace hsql diff --git a/src/sql/ImportStatement.h b/src/sql/ImportStatement.h index 214d1d84..04c2b6d0 100644 --- a/src/sql/ImportStatement.h +++ b/src/sql/ImportStatement.h @@ -17,6 +17,9 @@ struct ImportStatement : SQLStatement { char* tableName; Expr* whereClause; char* encoding; + char* delimiter; + char* null; + char* quote; }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index e502665c..e9a3ceb7 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -140,7 +140,10 @@ ExportStatement::ExportStatement(ImportType type) schema(nullptr), tableName(nullptr), select(nullptr), - encoding(nullptr) {} + encoding(nullptr), + delimiter(nullptr), + null(nullptr), + quote(nullptr) {} ExportStatement::~ExportStatement() { free(filePath); @@ -148,11 +151,20 @@ ExportStatement::~ExportStatement() { free(tableName); delete select; free(encoding); + free(delimiter); + free(null); + free(quote); } -ImportExportOptions::ImportExportOptions() : format(kImportAuto), encoding(nullptr) {} +ImportExportOptions::ImportExportOptions() + : format(kImportAuto), encoding(nullptr), delimiter(nullptr), null(nullptr), quote(nullptr) {} -ImportExportOptions::~ImportExportOptions() { free(encoding); } +ImportExportOptions::~ImportExportOptions() { + free(encoding); + free(delimiter); + free(null); + free(quote); +} // ImportStatement ImportStatement::ImportStatement(ImportType type) @@ -162,7 +174,10 @@ ImportStatement::ImportStatement(ImportType type) schema(nullptr), tableName(nullptr), whereClause(nullptr), - encoding(nullptr) {} + encoding(nullptr), + delimiter(nullptr), + null(nullptr), + quote(nullptr) {} ImportStatement::~ImportStatement() { free(filePath); @@ -170,6 +185,9 @@ ImportStatement::~ImportStatement() { free(tableName); delete whereClause; free(encoding); + free(delimiter); + free(null); + free(quote); } // InsertStatement diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index ca210875..c8fef797 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -74,6 +74,7 @@ COPY students FROM 'file_path' WITH (FORMAT TBL); COPY students FROM 'file_path' WITH (FORMAT CSV); COPY students FROM 'file_path' WITH (FORMAT BIN); COPY students FROM 'file_path' WITH (FORMAT BINARY); +COPY students FROM 'file_path' WITH (FORMAT CSV, DELIMITER '|', NULL '', QUOTE '"'); COPY students FROM 'file_path' (FORMAT TBL); COPY good_students FROM 'file_path' WHERE grade > (SELECT AVG(grade) from alumni); COPY students TO 'student.tbl'; diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index df70b522..0d219f34 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -466,16 +466,22 @@ TEST(ImportStatementTest) { } TEST(CopyStatementTest) { - TEST_PARSE_SINGLE_SQL("COPY students FROM 'students_file' WITH (FORMAT BINARY);", kStmtImport, ImportStatement, - import_result, import_stmt); + TEST_PARSE_SINGLE_SQL("COPY students FROM 'students_file' WITH (FORMAT CSV, DELIMITER '|', NULL '', QUOTE '\"');", + kStmtImport, ImportStatement, import_result, import_stmt); - ASSERT_EQ(import_stmt->type, kImportBinary); + ASSERT_EQ(import_stmt->type, kImportCSV); ASSERT_NOTNULL(import_stmt->tableName); ASSERT_STREQ(import_stmt->tableName, "students"); ASSERT_NOTNULL(import_stmt->filePath); ASSERT_STREQ(import_stmt->filePath, "students_file"); ASSERT_NULL(import_stmt->whereClause); ASSERT_NULL(import_stmt->encoding); + ASSERT_NOTNULL(import_stmt->delimiter); + ASSERT_STREQ(import_stmt->delimiter, "|"); + ASSERT_NOTNULL(import_stmt->null); + ASSERT_STREQ(import_stmt->null, ""); + ASSERT_NOTNULL(import_stmt->quote); + ASSERT_STREQ(import_stmt->quote, "\""); TEST_PARSE_SINGLE_SQL("COPY students FROM 'students_file' WHERE lastname = 'Potter';", kStmtImport, ImportStatement, import_filter_result, import_filter_stmt); @@ -493,10 +499,10 @@ TEST(CopyStatementTest) { ASSERT_STREQ(import_filter_stmt->whereClause->expr2->name, "Potter"); ASSERT_NULL(import_filter_stmt->encoding); - TEST_PARSE_SINGLE_SQL("COPY students TO 'students_file' WITH (ENCODING 'FSST', FORMAT CSV);", kStmtExport, + TEST_PARSE_SINGLE_SQL("COPY students TO 'students_file' WITH (ENCODING 'FSST', FORMAT BINARY);", kStmtExport, ExportStatement, export_table_result, export_table_stmt); - ASSERT_EQ(export_table_stmt->type, kImportCSV); + ASSERT_EQ(export_table_stmt->type, kImportBinary); ASSERT_NOTNULL(export_table_stmt->tableName); ASSERT_STREQ(export_table_stmt->tableName, "students"); ASSERT_NOTNULL(export_table_stmt->filePath); From 062a6ec53357d370455439acdee0d0c57c2d5de5 Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:31:13 +0200 Subject: [PATCH 02/10] move csv options to separate struct and check whether the format is csv (or auto) --- src/parser/bison_parser.cpp | 3824 +++++++++++----------- src/parser/bison_parser.h | 21 +- src/parser/bison_parser.y | 138 +- src/parser/flex_lexer.cpp | 5122 +++++++++++++++--------------- src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 2 - src/sql/CsvImportExportOptions.h | 17 + src/sql/ExportStatement.h | 5 +- src/sql/ImportExportOptions.h | 6 +- src/sql/ImportStatement.h | 5 +- src/sql/statements.cpp | 24 +- test/queries/queries-bad.sql | 1 + test/sql_tests.cpp | 16 +- 13 files changed, 4580 insertions(+), 4603 deletions(-) create mode 100644 src/sql/CsvImportExportOptions.h diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 34ecb532..6d62acfc 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -307,167 +307,166 @@ enum yysymbol_kind_t YYSYMBOL_FOREIGN = 171, /* FOREIGN */ YYSYMBOL_KEY = 172, /* KEY */ YYSYMBOL_REFERENCES = 173, /* REFERENCES */ - YYSYMBOL_DELIMITER = 174, /* DELIMITER */ - YYSYMBOL_QUOTE = 175, /* QUOTE */ - YYSYMBOL_176_ = 176, /* '=' */ - YYSYMBOL_EQUALS = 177, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 178, /* NOTEQUALS */ - YYSYMBOL_179_ = 179, /* '<' */ - YYSYMBOL_180_ = 180, /* '>' */ - YYSYMBOL_LESS = 181, /* LESS */ - YYSYMBOL_GREATER = 182, /* GREATER */ - YYSYMBOL_LESSEQ = 183, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 184, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 185, /* NOTNULL */ - YYSYMBOL_186_ = 186, /* '+' */ - YYSYMBOL_187_ = 187, /* '-' */ - YYSYMBOL_188_ = 188, /* '*' */ - YYSYMBOL_189_ = 189, /* '/' */ - YYSYMBOL_190_ = 190, /* '%' */ - YYSYMBOL_191_ = 191, /* '^' */ - YYSYMBOL_UMINUS = 192, /* UMINUS */ - YYSYMBOL_193_ = 193, /* '[' */ - YYSYMBOL_194_ = 194, /* ']' */ - YYSYMBOL_195_ = 195, /* '(' */ - YYSYMBOL_196_ = 196, /* ')' */ - YYSYMBOL_197_ = 197, /* '.' */ - YYSYMBOL_198_ = 198, /* ';' */ - YYSYMBOL_199_ = 199, /* ',' */ - YYSYMBOL_200_ = 200, /* '?' */ - YYSYMBOL_YYACCEPT = 201, /* $accept */ - YYSYMBOL_input = 202, /* input */ - YYSYMBOL_statement_list = 203, /* statement_list */ - YYSYMBOL_statement = 204, /* statement */ - YYSYMBOL_preparable_statement = 205, /* preparable_statement */ - YYSYMBOL_opt_hints = 206, /* opt_hints */ - YYSYMBOL_hint_list = 207, /* hint_list */ - YYSYMBOL_hint = 208, /* hint */ - YYSYMBOL_transaction_statement = 209, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 210, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 211, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 212, /* prepare_target_query */ - YYSYMBOL_execute_statement = 213, /* execute_statement */ - YYSYMBOL_import_statement = 214, /* import_statement */ - YYSYMBOL_file_type = 215, /* file_type */ - YYSYMBOL_file_path = 216, /* file_path */ - YYSYMBOL_opt_import_export_options = 217, /* opt_import_export_options */ - YYSYMBOL_import_export_options = 218, /* import_export_options */ - YYSYMBOL_export_statement = 219, /* export_statement */ - YYSYMBOL_show_statement = 220, /* show_statement */ - YYSYMBOL_create_statement = 221, /* create_statement */ - YYSYMBOL_opt_not_exists = 222, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 223, /* table_elem_commalist */ - YYSYMBOL_table_elem = 224, /* table_elem */ - YYSYMBOL_column_def = 225, /* column_def */ - YYSYMBOL_column_type = 226, /* column_type */ - YYSYMBOL_opt_time_precision = 227, /* opt_time_precision */ - YYSYMBOL_opt_decimal_specification = 228, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 229, /* opt_column_constraints */ - YYSYMBOL_column_constraints = 230, /* column_constraints */ - YYSYMBOL_column_constraint = 231, /* column_constraint */ - YYSYMBOL_table_constraint = 232, /* table_constraint */ - YYSYMBOL_references_spec = 233, /* references_spec */ - YYSYMBOL_drop_statement = 234, /* drop_statement */ - YYSYMBOL_opt_exists = 235, /* opt_exists */ - YYSYMBOL_alter_statement = 236, /* alter_statement */ - YYSYMBOL_alter_action = 237, /* alter_action */ - YYSYMBOL_drop_action = 238, /* drop_action */ - YYSYMBOL_delete_statement = 239, /* delete_statement */ - YYSYMBOL_truncate_statement = 240, /* truncate_statement */ - YYSYMBOL_insert_statement = 241, /* insert_statement */ - YYSYMBOL_opt_column_list = 242, /* opt_column_list */ - YYSYMBOL_update_statement = 243, /* update_statement */ - YYSYMBOL_update_clause_commalist = 244, /* update_clause_commalist */ - YYSYMBOL_update_clause = 245, /* update_clause */ - YYSYMBOL_select_statement = 246, /* select_statement */ - YYSYMBOL_select_within_set_operation = 247, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 248, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 249, /* select_with_paren */ - YYSYMBOL_select_no_paren = 250, /* select_no_paren */ - YYSYMBOL_set_operator = 251, /* set_operator */ - YYSYMBOL_set_type = 252, /* set_type */ - YYSYMBOL_opt_all = 253, /* opt_all */ - YYSYMBOL_select_clause = 254, /* select_clause */ - YYSYMBOL_opt_distinct = 255, /* opt_distinct */ - YYSYMBOL_select_list = 256, /* select_list */ - YYSYMBOL_opt_from_clause = 257, /* opt_from_clause */ - YYSYMBOL_from_clause = 258, /* from_clause */ - YYSYMBOL_opt_where = 259, /* opt_where */ - YYSYMBOL_opt_group = 260, /* opt_group */ - YYSYMBOL_opt_having = 261, /* opt_having */ - YYSYMBOL_opt_order = 262, /* opt_order */ - YYSYMBOL_order_list = 263, /* order_list */ - YYSYMBOL_order_desc = 264, /* order_desc */ - YYSYMBOL_opt_order_type = 265, /* opt_order_type */ - YYSYMBOL_opt_top = 266, /* opt_top */ - YYSYMBOL_opt_limit = 267, /* opt_limit */ - YYSYMBOL_expr_list = 268, /* expr_list */ - YYSYMBOL_opt_extended_literal_list = 269, /* opt_extended_literal_list */ - YYSYMBOL_extended_literal_list = 270, /* extended_literal_list */ - YYSYMBOL_casted_extended_literal = 271, /* casted_extended_literal */ - YYSYMBOL_extended_literal = 272, /* extended_literal */ - YYSYMBOL_expr_alias = 273, /* expr_alias */ - YYSYMBOL_expr = 274, /* expr */ - YYSYMBOL_operand = 275, /* operand */ - YYSYMBOL_scalar_expr = 276, /* scalar_expr */ - YYSYMBOL_unary_expr = 277, /* unary_expr */ - YYSYMBOL_binary_expr = 278, /* binary_expr */ - YYSYMBOL_logic_expr = 279, /* logic_expr */ - YYSYMBOL_in_expr = 280, /* in_expr */ - YYSYMBOL_case_expr = 281, /* case_expr */ - YYSYMBOL_case_list = 282, /* case_list */ - YYSYMBOL_exists_expr = 283, /* exists_expr */ - YYSYMBOL_comp_expr = 284, /* comp_expr */ - YYSYMBOL_function_expr = 285, /* function_expr */ - YYSYMBOL_opt_window = 286, /* opt_window */ - YYSYMBOL_opt_partition = 287, /* opt_partition */ - YYSYMBOL_opt_frame_clause = 288, /* opt_frame_clause */ - YYSYMBOL_frame_type = 289, /* frame_type */ - YYSYMBOL_frame_bound = 290, /* frame_bound */ - YYSYMBOL_extract_expr = 291, /* extract_expr */ - YYSYMBOL_cast_expr = 292, /* cast_expr */ - YYSYMBOL_datetime_field = 293, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 294, /* datetime_field_plural */ - YYSYMBOL_duration_field = 295, /* duration_field */ - YYSYMBOL_array_expr = 296, /* array_expr */ - YYSYMBOL_array_index = 297, /* array_index */ - YYSYMBOL_between_expr = 298, /* between_expr */ - YYSYMBOL_column_name = 299, /* column_name */ - YYSYMBOL_literal = 300, /* literal */ - YYSYMBOL_string_literal = 301, /* string_literal */ - YYSYMBOL_bool_literal = 302, /* bool_literal */ - YYSYMBOL_num_literal = 303, /* num_literal */ - YYSYMBOL_int_literal = 304, /* int_literal */ - YYSYMBOL_null_literal = 305, /* null_literal */ - YYSYMBOL_date_literal = 306, /* date_literal */ - YYSYMBOL_interval_literal = 307, /* interval_literal */ - YYSYMBOL_param_expr = 308, /* param_expr */ - YYSYMBOL_table_ref = 309, /* table_ref */ - YYSYMBOL_table_ref_atomic = 310, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 311, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 312, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 313, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 314, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 315, /* table_name */ - YYSYMBOL_opt_index_name = 316, /* opt_index_name */ - YYSYMBOL_table_alias = 317, /* table_alias */ - YYSYMBOL_opt_table_alias = 318, /* opt_table_alias */ - YYSYMBOL_alias = 319, /* alias */ - YYSYMBOL_opt_alias = 320, /* opt_alias */ - YYSYMBOL_opt_locking_clause = 321, /* opt_locking_clause */ - YYSYMBOL_opt_locking_clause_list = 322, /* opt_locking_clause_list */ - YYSYMBOL_locking_clause = 323, /* locking_clause */ - YYSYMBOL_row_lock_mode = 324, /* row_lock_mode */ - YYSYMBOL_opt_row_lock_policy = 325, /* opt_row_lock_policy */ - YYSYMBOL_opt_with_clause = 326, /* opt_with_clause */ - YYSYMBOL_with_clause = 327, /* with_clause */ - YYSYMBOL_with_description_list = 328, /* with_description_list */ - YYSYMBOL_with_description = 329, /* with_description */ - YYSYMBOL_join_clause = 330, /* join_clause */ - YYSYMBOL_opt_join_type = 331, /* opt_join_type */ - YYSYMBOL_join_condition = 332, /* join_condition */ - YYSYMBOL_opt_semicolon = 333, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 334 /* ident_commalist */ + YYSYMBOL_174_ = 174, /* '=' */ + YYSYMBOL_EQUALS = 175, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 176, /* NOTEQUALS */ + YYSYMBOL_177_ = 177, /* '<' */ + YYSYMBOL_178_ = 178, /* '>' */ + YYSYMBOL_LESS = 179, /* LESS */ + YYSYMBOL_GREATER = 180, /* GREATER */ + YYSYMBOL_LESSEQ = 181, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 182, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 183, /* NOTNULL */ + YYSYMBOL_184_ = 184, /* '+' */ + YYSYMBOL_185_ = 185, /* '-' */ + YYSYMBOL_186_ = 186, /* '*' */ + YYSYMBOL_187_ = 187, /* '/' */ + YYSYMBOL_188_ = 188, /* '%' */ + YYSYMBOL_189_ = 189, /* '^' */ + YYSYMBOL_UMINUS = 190, /* UMINUS */ + YYSYMBOL_191_ = 191, /* '[' */ + YYSYMBOL_192_ = 192, /* ']' */ + YYSYMBOL_193_ = 193, /* '(' */ + YYSYMBOL_194_ = 194, /* ')' */ + YYSYMBOL_195_ = 195, /* '.' */ + YYSYMBOL_196_ = 196, /* ';' */ + YYSYMBOL_197_ = 197, /* ',' */ + YYSYMBOL_198_ = 198, /* '?' */ + YYSYMBOL_YYACCEPT = 199, /* $accept */ + YYSYMBOL_input = 200, /* input */ + YYSYMBOL_statement_list = 201, /* statement_list */ + YYSYMBOL_statement = 202, /* statement */ + YYSYMBOL_preparable_statement = 203, /* preparable_statement */ + YYSYMBOL_opt_hints = 204, /* opt_hints */ + YYSYMBOL_hint_list = 205, /* hint_list */ + YYSYMBOL_hint = 206, /* hint */ + YYSYMBOL_transaction_statement = 207, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 208, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 209, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 210, /* prepare_target_query */ + YYSYMBOL_execute_statement = 211, /* execute_statement */ + YYSYMBOL_import_statement = 212, /* import_statement */ + YYSYMBOL_file_type = 213, /* file_type */ + YYSYMBOL_file_path = 214, /* file_path */ + YYSYMBOL_opt_import_export_options = 215, /* opt_import_export_options */ + YYSYMBOL_import_export_options = 216, /* import_export_options */ + YYSYMBOL_csv_import_export_options = 217, /* csv_import_export_options */ + YYSYMBOL_export_statement = 218, /* export_statement */ + YYSYMBOL_show_statement = 219, /* show_statement */ + YYSYMBOL_create_statement = 220, /* create_statement */ + YYSYMBOL_opt_not_exists = 221, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 222, /* table_elem_commalist */ + YYSYMBOL_table_elem = 223, /* table_elem */ + YYSYMBOL_column_def = 224, /* column_def */ + YYSYMBOL_column_type = 225, /* column_type */ + YYSYMBOL_opt_time_precision = 226, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 227, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 228, /* opt_column_constraints */ + YYSYMBOL_column_constraints = 229, /* column_constraints */ + YYSYMBOL_column_constraint = 230, /* column_constraint */ + YYSYMBOL_table_constraint = 231, /* table_constraint */ + YYSYMBOL_references_spec = 232, /* references_spec */ + YYSYMBOL_drop_statement = 233, /* drop_statement */ + YYSYMBOL_opt_exists = 234, /* opt_exists */ + YYSYMBOL_alter_statement = 235, /* alter_statement */ + YYSYMBOL_alter_action = 236, /* alter_action */ + YYSYMBOL_drop_action = 237, /* drop_action */ + YYSYMBOL_delete_statement = 238, /* delete_statement */ + YYSYMBOL_truncate_statement = 239, /* truncate_statement */ + YYSYMBOL_insert_statement = 240, /* insert_statement */ + YYSYMBOL_opt_column_list = 241, /* opt_column_list */ + YYSYMBOL_update_statement = 242, /* update_statement */ + YYSYMBOL_update_clause_commalist = 243, /* update_clause_commalist */ + YYSYMBOL_update_clause = 244, /* update_clause */ + YYSYMBOL_select_statement = 245, /* select_statement */ + YYSYMBOL_select_within_set_operation = 246, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 247, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 248, /* select_with_paren */ + YYSYMBOL_select_no_paren = 249, /* select_no_paren */ + YYSYMBOL_set_operator = 250, /* set_operator */ + YYSYMBOL_set_type = 251, /* set_type */ + YYSYMBOL_opt_all = 252, /* opt_all */ + YYSYMBOL_select_clause = 253, /* select_clause */ + YYSYMBOL_opt_distinct = 254, /* opt_distinct */ + YYSYMBOL_select_list = 255, /* select_list */ + YYSYMBOL_opt_from_clause = 256, /* opt_from_clause */ + YYSYMBOL_from_clause = 257, /* from_clause */ + YYSYMBOL_opt_where = 258, /* opt_where */ + YYSYMBOL_opt_group = 259, /* opt_group */ + YYSYMBOL_opt_having = 260, /* opt_having */ + YYSYMBOL_opt_order = 261, /* opt_order */ + YYSYMBOL_order_list = 262, /* order_list */ + YYSYMBOL_order_desc = 263, /* order_desc */ + YYSYMBOL_opt_order_type = 264, /* opt_order_type */ + YYSYMBOL_opt_top = 265, /* opt_top */ + YYSYMBOL_opt_limit = 266, /* opt_limit */ + YYSYMBOL_expr_list = 267, /* expr_list */ + YYSYMBOL_opt_extended_literal_list = 268, /* opt_extended_literal_list */ + YYSYMBOL_extended_literal_list = 269, /* extended_literal_list */ + YYSYMBOL_casted_extended_literal = 270, /* casted_extended_literal */ + YYSYMBOL_extended_literal = 271, /* extended_literal */ + YYSYMBOL_expr_alias = 272, /* expr_alias */ + YYSYMBOL_expr = 273, /* expr */ + YYSYMBOL_operand = 274, /* operand */ + YYSYMBOL_scalar_expr = 275, /* scalar_expr */ + YYSYMBOL_unary_expr = 276, /* unary_expr */ + YYSYMBOL_binary_expr = 277, /* binary_expr */ + YYSYMBOL_logic_expr = 278, /* logic_expr */ + YYSYMBOL_in_expr = 279, /* in_expr */ + YYSYMBOL_case_expr = 280, /* case_expr */ + YYSYMBOL_case_list = 281, /* case_list */ + YYSYMBOL_exists_expr = 282, /* exists_expr */ + YYSYMBOL_comp_expr = 283, /* comp_expr */ + YYSYMBOL_function_expr = 284, /* function_expr */ + YYSYMBOL_opt_window = 285, /* opt_window */ + YYSYMBOL_opt_partition = 286, /* opt_partition */ + YYSYMBOL_opt_frame_clause = 287, /* opt_frame_clause */ + YYSYMBOL_frame_type = 288, /* frame_type */ + YYSYMBOL_frame_bound = 289, /* frame_bound */ + YYSYMBOL_extract_expr = 290, /* extract_expr */ + YYSYMBOL_cast_expr = 291, /* cast_expr */ + YYSYMBOL_datetime_field = 292, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 293, /* datetime_field_plural */ + YYSYMBOL_duration_field = 294, /* duration_field */ + YYSYMBOL_array_expr = 295, /* array_expr */ + YYSYMBOL_array_index = 296, /* array_index */ + YYSYMBOL_between_expr = 297, /* between_expr */ + YYSYMBOL_column_name = 298, /* column_name */ + YYSYMBOL_literal = 299, /* literal */ + YYSYMBOL_string_literal = 300, /* string_literal */ + YYSYMBOL_bool_literal = 301, /* bool_literal */ + YYSYMBOL_num_literal = 302, /* num_literal */ + YYSYMBOL_int_literal = 303, /* int_literal */ + YYSYMBOL_null_literal = 304, /* null_literal */ + YYSYMBOL_date_literal = 305, /* date_literal */ + YYSYMBOL_interval_literal = 306, /* interval_literal */ + YYSYMBOL_param_expr = 307, /* param_expr */ + YYSYMBOL_table_ref = 308, /* table_ref */ + YYSYMBOL_table_ref_atomic = 309, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 310, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 311, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 312, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 313, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 314, /* table_name */ + YYSYMBOL_opt_index_name = 315, /* opt_index_name */ + YYSYMBOL_table_alias = 316, /* table_alias */ + YYSYMBOL_opt_table_alias = 317, /* opt_table_alias */ + YYSYMBOL_alias = 318, /* alias */ + YYSYMBOL_opt_alias = 319, /* opt_alias */ + YYSYMBOL_opt_locking_clause = 320, /* opt_locking_clause */ + YYSYMBOL_opt_locking_clause_list = 321, /* opt_locking_clause_list */ + YYSYMBOL_locking_clause = 322, /* locking_clause */ + YYSYMBOL_row_lock_mode = 323, /* row_lock_mode */ + YYSYMBOL_opt_row_lock_policy = 324, /* opt_row_lock_policy */ + YYSYMBOL_opt_with_clause = 325, /* opt_with_clause */ + YYSYMBOL_with_clause = 326, /* with_clause */ + YYSYMBOL_with_description_list = 327, /* with_description_list */ + YYSYMBOL_with_description = 328, /* with_description */ + YYSYMBOL_join_clause = 329, /* join_clause */ + YYSYMBOL_opt_join_type = 330, /* opt_join_type */ + YYSYMBOL_join_condition = 331, /* join_condition */ + YYSYMBOL_opt_semicolon = 332, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 333 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -798,19 +797,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 893 +#define YYLAST 864 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 201 +#define YYNTOKENS 199 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 134 +#define YYNNTS 135 /* YYNRULES -- Number of rules. */ -#define YYNRULES 355 +#define YYNRULES 353 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 652 +#define YYNSTATES 646 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 438 +#define YYMAXUTOK 436 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -827,13 +826,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, 190, 2, 2, - 195, 196, 188, 186, 199, 187, 197, 189, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 198, - 179, 176, 180, 200, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 188, 2, 2, + 193, 194, 186, 184, 197, 185, 195, 187, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 196, + 177, 174, 178, 198, 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, 193, 2, 194, 191, 2, 2, 2, 2, 2, + 2, 191, 2, 192, 189, 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, @@ -866,50 +865,50 @@ static const yytype_uint8 yytranslate[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 177, 178, 181, 182, 183, 184, 185, 192 + 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, + 176, 179, 180, 181, 182, 183, 190 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 336, 336, 355, 361, 368, 372, 376, 377, 378, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 395, 396, 398, 402, 407, 411, 421, 422, 423, 425, - 425, 431, 437, 439, 443, 455, 461, 486, 501, 503, - 504, 505, 507, 516, 520, 530, 534, 544, 548, 558, - 562, 572, 582, 605, 633, 634, 639, 650, 663, 675, - 682, 689, 698, 699, 701, 705, 710, 711, 713, 721, - 722, 723, 724, 725, 726, 727, 731, 732, 733, 734, - 735, 736, 737, 738, 739, 740, 741, 743, 744, 746, - 747, 748, 750, 751, 753, 757, 761, 766, 774, 775, - 776, 777, 779, 780, 781, 783, 791, 797, 803, 809, - 815, 816, 823, 829, 831, 841, 848, 859, 866, 874, - 875, 882, 889, 893, 898, 908, 912, 916, 928, 928, - 930, 931, 940, 941, 943, 957, 969, 974, 978, 982, - 987, 988, 990, 1000, 1001, 1003, 1005, 1006, 1008, 1010, - 1011, 1013, 1018, 1020, 1021, 1023, 1024, 1026, 1030, 1035, - 1037, 1038, 1039, 1043, 1044, 1046, 1047, 1048, 1049, 1050, - 1051, 1056, 1060, 1066, 1067, 1069, 1073, 1078, 1078, 1082, - 1090, 1091, 1093, 1102, 1102, 1102, 1102, 1102, 1104, 1105, - 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106, 1110, - 1110, 1112, 1113, 1114, 1115, 1116, 1118, 1118, 1119, 1120, - 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1129, 1130, 1132, - 1133, 1134, 1135, 1139, 1140, 1141, 1142, 1144, 1145, 1147, - 1148, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1160, 1161, - 1165, 1166, 1168, 1169, 1174, 1175, 1176, 1180, 1181, 1182, - 1184, 1185, 1186, 1187, 1188, 1190, 1192, 1194, 1195, 1196, - 1197, 1198, 1199, 1201, 1202, 1203, 1204, 1205, 1206, 1208, - 1208, 1210, 1212, 1214, 1216, 1217, 1218, 1219, 1221, 1221, - 1221, 1221, 1221, 1221, 1221, 1223, 1225, 1226, 1228, 1229, - 1231, 1233, 1235, 1246, 1247, 1258, 1290, 1299, 1299, 1306, - 1306, 1308, 1308, 1315, 1319, 1324, 1332, 1338, 1342, 1347, - 1348, 1350, 1350, 1352, 1352, 1354, 1355, 1357, 1357, 1363, - 1364, 1366, 1370, 1375, 1381, 1388, 1389, 1390, 1391, 1393, - 1394, 1395, 1401, 1401, 1403, 1405, 1409, 1414, 1424, 1431, - 1439, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 1457, 1459, 1465, 1465, 1468, 1472 + 0, 337, 337, 356, 362, 369, 373, 377, 378, 379, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 396, 397, 399, 403, 408, 412, 422, 423, 424, 426, + 426, 432, 438, 440, 444, 456, 462, 479, 494, 496, + 497, 498, 500, 514, 518, 528, 532, 580, 585, 600, + 610, 625, 645, 646, 651, 662, 675, 687, 694, 701, + 710, 711, 713, 717, 722, 723, 725, 733, 734, 735, + 736, 737, 738, 739, 743, 744, 745, 746, 747, 748, + 749, 750, 751, 752, 753, 755, 756, 758, 759, 760, + 762, 763, 765, 769, 773, 778, 786, 787, 788, 789, + 791, 792, 793, 795, 803, 809, 815, 821, 827, 828, + 835, 841, 843, 853, 860, 871, 878, 886, 887, 894, + 901, 905, 910, 920, 924, 928, 940, 940, 942, 943, + 952, 953, 955, 969, 981, 986, 990, 994, 999, 1000, + 1002, 1012, 1013, 1015, 1017, 1018, 1020, 1022, 1023, 1025, + 1030, 1032, 1033, 1035, 1036, 1038, 1042, 1047, 1049, 1050, + 1051, 1055, 1056, 1058, 1059, 1060, 1061, 1062, 1063, 1068, + 1072, 1078, 1079, 1081, 1085, 1090, 1090, 1094, 1102, 1103, + 1105, 1114, 1114, 1114, 1114, 1114, 1116, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1118, 1118, 1122, 1122, 1124, + 1125, 1126, 1127, 1128, 1130, 1130, 1131, 1132, 1133, 1134, + 1135, 1136, 1137, 1138, 1139, 1141, 1142, 1144, 1145, 1146, + 1147, 1151, 1152, 1153, 1154, 1156, 1157, 1159, 1160, 1162, + 1163, 1164, 1165, 1166, 1167, 1168, 1172, 1173, 1177, 1178, + 1180, 1181, 1186, 1187, 1188, 1192, 1193, 1194, 1196, 1197, + 1198, 1199, 1200, 1202, 1204, 1206, 1207, 1208, 1209, 1210, + 1211, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1220, 1222, + 1224, 1226, 1228, 1229, 1230, 1231, 1233, 1233, 1233, 1233, + 1233, 1233, 1233, 1235, 1237, 1238, 1240, 1241, 1243, 1245, + 1247, 1258, 1259, 1270, 1302, 1311, 1311, 1318, 1318, 1320, + 1320, 1327, 1331, 1336, 1344, 1350, 1354, 1359, 1360, 1362, + 1362, 1364, 1364, 1366, 1367, 1369, 1369, 1375, 1376, 1378, + 1382, 1387, 1393, 1400, 1401, 1402, 1403, 1405, 1406, 1407, + 1413, 1413, 1415, 1417, 1421, 1426, 1436, 1443, 1451, 1460, + 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1471, + 1477, 1477, 1480, 1484 }; #endif @@ -949,24 +948,24 @@ static const char *const yytname[] = "TRANSACTION", "BEGIN", "COMMIT", "ROLLBACK", "NOWAIT", "SKIP", "LOCKED", "SHARE", "RANGE", "ROWS", "GROUPS", "UNBOUNDED", "FOLLOWING", "PRECEDING", "CURRENT_ROW", "UNIQUE", "PRIMARY", "FOREIGN", "KEY", - "REFERENCES", "DELIMITER", "QUOTE", "'='", "EQUALS", "NOTEQUALS", "'<'", - "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", - "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", - "';'", "','", "'?'", "$accept", "input", "statement_list", "statement", + "REFERENCES", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", + "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", + "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", + "'?'", "$accept", "input", "statement_list", "statement", "preparable_statement", "opt_hints", "hint_list", "hint", "transaction_statement", "opt_transaction_keyword", "prepare_statement", "prepare_target_query", "execute_statement", "import_statement", "file_type", "file_path", "opt_import_export_options", - "import_export_options", "export_statement", "show_statement", - "create_statement", "opt_not_exists", "table_elem_commalist", - "table_elem", "column_def", "column_type", "opt_time_precision", - "opt_decimal_specification", "opt_column_constraints", - "column_constraints", "column_constraint", "table_constraint", - "references_spec", "drop_statement", "opt_exists", "alter_statement", - "alter_action", "drop_action", "delete_statement", "truncate_statement", - "insert_statement", "opt_column_list", "update_statement", - "update_clause_commalist", "update_clause", "select_statement", - "select_within_set_operation", + "import_export_options", "csv_import_export_options", "export_statement", + "show_statement", "create_statement", "opt_not_exists", + "table_elem_commalist", "table_elem", "column_def", "column_type", + "opt_time_precision", "opt_decimal_specification", + "opt_column_constraints", "column_constraints", "column_constraint", + "table_constraint", "references_spec", "drop_statement", "opt_exists", + "alter_statement", "alter_action", "drop_action", "delete_statement", + "truncate_statement", "insert_statement", "opt_column_list", + "update_statement", "update_clause_commalist", "update_clause", + "select_statement", "select_within_set_operation", "select_within_set_operation_no_parentheses", "select_with_paren", "select_no_paren", "set_operator", "set_type", "opt_all", "select_clause", "opt_distinct", "select_list", "opt_from_clause", @@ -999,12 +998,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-459) +#define YYPACT_NINF (-566) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-353) +#define YYTABLE_NINF (-351) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1013,72 +1012,71 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 614, 33, 71, 77, 86, 71, 155, -28, -1, 158, - 71, 191, 14, 213, 30, 135, 113, 113, 113, 275, - 149, -459, 196, -459, 196, -459, -459, -459, -459, -459, - -459, -459, -459, -459, -459, -459, -459, -17, -459, 346, - 168, -459, 162, 279, -459, 239, 239, 239, 71, 378, - 71, 263, -459, 283, -17, 288, 69, 283, 283, 283, - 71, -459, 300, 232, -459, -459, -459, -459, -459, -459, - 587, -459, 301, -459, -459, 332, 79, -459, 78, -459, - 454, 190, 459, 350, 470, 71, 71, 397, -459, 388, - 287, 480, 440, 71, 292, 293, 487, 487, 487, 491, - 71, 71, -459, 303, 135, -459, 304, 494, 492, -459, - -459, -459, -17, 390, 380, -17, 13, -459, -459, -459, - 701, 314, 506, -459, 507, -459, -459, 58, -459, 316, - 320, -459, -459, -459, -459, -459, -459, -459, -459, -459, - -459, -459, -459, -459, 476, -459, 393, -47, 287, 297, - -459, 487, 520, 12, 349, -44, -459, -459, 435, -459, - -459, -459, -63, -63, -63, -459, -459, -459, -459, -459, - 524, -459, -459, -459, 297, 456, -459, -459, 79, -459, - -459, 297, 456, 297, 49, 411, -459, -459, -459, -459, - -459, -459, -459, -459, -459, -459, -459, -459, -459, -459, - -459, 228, -459, 296, -459, -459, -459, 190, -459, 71, - 530, 421, 59, 412, 272, 343, 344, 345, 139, 308, - 348, 366, -459, 200, 152, 392, -459, -459, -459, -459, - -459, -459, -459, -459, -459, -459, -459, -459, -459, -459, - -459, -459, 444, -459, -6, 351, -459, 297, 480, -459, - 504, -459, -459, 352, 2, -459, 397, -459, 353, 111, - -459, 451, 356, -459, 42, 13, -17, 357, -459, 160, - 13, 152, 495, 137, 164, -459, 411, -459, 424, -459, - -459, 362, 458, -459, 652, 363, 387, 395, 198, -459, - -459, -459, 421, 16, 22, 502, 296, 297, 297, 252, - 187, 367, 366, 644, 297, 129, 368, -60, 297, 297, - 366, -459, 366, -36, 370, 151, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 494, 71, -459, 549, 190, 152, -459, 283, 2, - 569, 378, 570, 573, 582, 203, -459, 190, -459, 524, - 20, 397, -459, 297, -459, 585, -459, -459, -459, -459, - 297, -459, -459, -459, 411, 297, 297, -459, 418, -459, - 430, 10, -459, 652, 520, 487, -459, -459, 398, -459, - 400, -459, -459, 403, -459, -459, 404, -459, -459, -459, - -459, 405, -459, -459, 271, 520, 406, 409, -459, 59, - -459, 515, 297, -459, -459, 410, 511, 251, 66, 241, - 297, 297, -459, 502, 509, 63, -459, -459, -459, 496, - 610, 675, 366, 416, 200, -459, 503, 427, 675, 675, - 675, 675, 700, 700, 700, 700, 129, 129, 61, 61, - 61, -54, 428, -459, -459, 207, 620, 208, -459, -459, - -459, -459, -459, -459, 107, 212, -459, 421, -459, 436, - -459, 426, -459, 40, -459, 557, -459, -459, -459, -459, - 152, 152, 568, -459, 520, -459, 471, -459, 437, 221, - -459, 628, 632, -459, 636, 637, 638, -459, -459, 541, - -459, 474, 71, -459, 271, -459, -459, 223, 520, 520, - -459, 452, -459, 227, -459, 297, 652, 297, 297, -459, - 230, 199, 457, -459, 366, 675, 200, 460, 231, -459, - -459, -459, -459, -459, 646, 378, 653, 654, 655, -459, - 464, 562, -459, -459, -459, 584, 591, 592, 566, 20, - 645, -459, -459, -459, 545, -459, -459, 81, -459, -459, - -459, 477, 246, 479, 484, 490, -459, -459, 287, -459, - -459, -459, 254, 256, 567, 515, -55, 493, 152, 273, - -459, 297, -459, 644, 497, 265, -459, -459, -459, -459, - -459, -459, -459, 40, 20, -459, -459, -459, 20, 518, - 501, 297, -459, -459, -459, 682, -459, -459, -459, -459, - -459, 517, 565, 456, -459, -459, -459, -459, 152, -459, - -459, -459, -459, 537, 520, -20, 508, -459, 297, 315, - 512, 297, 269, 297, -459, -459, 356, -459, -459, -459, - 510, 23, 520, 152, -459, -459, 152, -459, 5, 15, - 120, -459, -459, 276, -459, -459, 576, -459, -459, -459, - 15, -459 + 615, 111, 57, 85, 127, 57, 182, 84, 102, 54, + 57, 128, 19, 186, 146, 240, 106, 106, 106, 229, + 78, -566, 169, -566, 169, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -17, -566, 289, + 117, -566, 110, 222, -566, 197, 197, 197, 57, 326, + 57, 213, -566, 214, -17, 225, -1, 214, 214, 214, + 57, -566, 239, 174, -566, -566, -566, -566, -566, -566, + 598, -566, 250, -566, -566, 242, 61, -566, 147, -566, + 379, 302, 387, 303, 427, 57, 57, 352, -566, 354, + 258, 452, 425, 57, 278, 284, 478, 478, 478, 504, + 57, 57, -566, 315, 240, -566, 316, 505, 501, -566, + -566, -566, -17, 403, 394, -17, 125, -566, -566, -566, + 423, 328, 519, -566, 524, -566, -566, 33, -566, 335, + 333, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, 485, -566, 404, -38, 258, 329, + -566, 478, 531, 96, 368, -39, -566, -566, 446, -566, + -566, -566, -62, -62, -62, -566, -566, -566, -566, -566, + 542, -566, -566, -566, 329, 470, -566, -566, 61, -566, + -566, 329, 470, 329, 49, 428, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, 334, -566, 269, -566, -566, -566, 302, -566, 57, + 546, 437, 18, 429, 75, 360, 362, 364, 163, 340, + 365, 389, -566, 233, -42, 415, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, 460, -566, -12, 366, -566, 329, 452, -566, + 534, -566, -566, 383, 56, -566, 352, -566, 384, 92, + -566, 484, 382, -566, 70, 125, -17, 386, -566, 108, + 125, -42, 525, 12, 2, -566, 428, -566, 456, -566, + -566, 391, 492, -566, 688, 393, 416, 422, 134, -566, + -566, -566, 437, 11, 17, 537, 269, 329, 329, 210, + 141, 414, 389, 629, 329, 113, 421, -55, 329, 329, + 389, -566, 389, 103, 418, 123, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 505, 57, -566, 605, 302, -42, -566, 214, 56, + 606, 610, 326, 612, 168, -566, -566, 302, -566, 542, + 23, 352, -566, 329, -566, 614, -566, -566, -566, -566, + 329, -566, -566, -566, 428, 329, 329, -566, 447, -566, + 448, -73, -566, 688, 531, 478, -566, -566, 430, -566, + 431, -566, -566, 433, -566, -566, 434, -566, -566, -566, + -566, 435, -566, -566, 150, 531, 436, 438, -566, 18, + -566, 541, 329, -566, -566, 439, 527, 153, 156, 165, + 329, 329, -566, 537, 533, 58, -566, -566, -566, 516, + 558, 658, 389, 443, 233, -566, 536, 450, 658, 658, + 658, 658, 673, 673, 673, 673, 113, 113, 41, 41, + 41, -67, 451, -566, -566, 176, 641, 184, -566, -566, + -566, -566, -566, 122, 205, -566, 437, -566, 301, -566, + 449, -566, 32, -566, 576, -566, -566, -566, -566, -42, + -42, 585, -566, 531, -566, 488, -566, 455, 226, -566, + 647, 648, -566, 651, 652, 655, -566, -566, 560, -566, + 490, 57, -566, 150, -566, -566, 251, 531, 531, -566, + 472, -566, 252, -566, 329, 688, 329, 329, -566, 193, + 178, 475, -566, 389, 658, 233, 476, 262, -566, -566, + -566, -566, -566, 662, 326, -566, -566, 477, 573, -566, + -566, -566, 595, 597, 600, 577, 23, 678, -566, -566, + -566, 556, -566, -566, -96, -566, -566, -566, 494, 263, + 496, 497, 498, -566, -566, 258, -566, -566, -566, 279, + 300, 579, 541, -51, 499, -42, 237, -566, 329, -566, + 629, 502, 307, -566, -566, -566, -566, 32, 23, -566, + -566, -566, 23, 363, 493, 329, -566, -566, -566, 691, + -566, -566, -566, -566, -566, 528, 572, 470, -566, -566, + -566, -566, -42, -566, -566, -566, -566, 417, 531, -22, + 506, -566, 329, 241, 510, 329, 308, 329, -566, -566, + 382, -566, -566, -566, 513, 25, 531, -42, -566, -566, + -42, -566, 185, 26, 231, -566, -566, 309, -566, -566, + 588, -566, -566, -566, 26, -566 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1086,110 +1084,109 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 353, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 332, 0, - 307, 116, 33, 0, 56, 63, 63, 63, 0, 0, - 0, 0, 306, 111, 0, 0, 0, 111, 111, 111, - 0, 54, 0, 334, 335, 29, 26, 28, 27, 1, - 333, 2, 0, 6, 5, 164, 125, 126, 156, 108, - 0, 174, 0, 0, 310, 0, 0, 150, 37, 0, - 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 4, 0, 0, 144, 138, - 139, 137, 0, 141, 0, 0, 170, 308, 285, 288, - 290, 0, 0, 291, 0, 286, 287, 0, 296, 0, - 173, 175, 177, 179, 278, 279, 280, 289, 281, 282, - 283, 284, 32, 31, 0, 309, 0, 0, 120, 0, - 115, 0, 0, 0, 0, 150, 122, 110, 0, 133, - 132, 38, 41, 41, 41, 109, 106, 107, 337, 336, - 0, 290, 163, 143, 0, 156, 129, 128, 130, 140, - 136, 0, 156, 0, 0, 320, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 293, 0, 292, 295, 180, 181, 34, 0, 62, 0, - 0, 333, 0, 0, 274, 0, 0, 0, 0, 0, - 0, 0, 276, 0, 149, 183, 190, 191, 192, 185, - 187, 193, 186, 206, 194, 195, 196, 197, 189, 184, - 199, 200, 0, 354, 0, 0, 118, 0, 0, 121, - 0, 112, 113, 0, 0, 53, 150, 52, 24, 0, - 22, 147, 145, 171, 318, 170, 0, 155, 157, 162, - 170, 166, 168, 165, 0, 134, 319, 321, 0, 294, - 176, 0, 0, 59, 0, 0, 0, 0, 0, 64, - 66, 67, 333, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 202, 0, 201, 0, 0, 0, 0, - 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 330, 0, + 305, 114, 33, 0, 54, 61, 61, 61, 0, 0, + 0, 0, 304, 109, 0, 0, 0, 109, 109, 109, + 0, 52, 0, 332, 333, 29, 26, 28, 27, 1, + 331, 2, 0, 6, 5, 162, 123, 124, 154, 106, + 0, 172, 0, 0, 308, 0, 0, 148, 37, 0, + 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 4, 0, 0, 142, 136, + 137, 135, 0, 139, 0, 0, 168, 306, 283, 286, + 288, 0, 0, 289, 0, 284, 285, 0, 294, 0, + 171, 173, 175, 177, 276, 277, 278, 287, 279, 280, + 281, 282, 32, 31, 0, 307, 0, 0, 118, 0, + 113, 0, 0, 0, 0, 148, 120, 108, 0, 131, + 130, 38, 41, 41, 41, 107, 104, 105, 335, 334, + 0, 288, 161, 141, 0, 154, 127, 126, 128, 138, + 134, 0, 154, 0, 0, 318, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 291, 0, 290, 293, 178, 179, 34, 0, 60, 0, + 0, 331, 0, 0, 272, 0, 0, 0, 0, 0, + 0, 0, 274, 0, 147, 181, 188, 189, 190, 183, + 185, 191, 184, 204, 192, 193, 194, 195, 187, 182, + 197, 198, 0, 352, 0, 0, 116, 0, 0, 119, + 0, 110, 111, 0, 0, 51, 148, 50, 24, 0, + 22, 145, 143, 169, 316, 168, 0, 153, 155, 160, + 168, 164, 166, 163, 0, 132, 317, 319, 0, 292, + 174, 0, 0, 57, 0, 0, 0, 0, 0, 62, + 64, 65, 331, 142, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 0, 199, 0, 0, 0, 0, + 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 124, 123, 111, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 20, 0, - 0, 150, 146, 0, 316, 0, 317, 182, 127, 131, - 0, 161, 160, 159, 320, 0, 0, 325, 0, 327, - 0, 331, 322, 0, 0, 0, 85, 79, 0, 81, - 91, 82, 69, 0, 76, 77, 0, 73, 74, 80, - 83, 88, 78, 70, 93, 0, 0, 0, 58, 0, - 61, 241, 0, 275, 277, 0, 0, 0, 0, 0, - 0, 0, 225, 0, 0, 0, 198, 188, 217, 218, - 0, 213, 0, 0, 0, 204, 0, 216, 215, 231, - 232, 233, 234, 235, 236, 237, 208, 207, 210, 209, - 211, 212, 0, 35, 355, 0, 0, 0, 45, 43, - 49, 47, 51, 40, 0, 0, 23, 333, 148, 297, - 299, 0, 301, 314, 300, 152, 172, 315, 158, 135, - 169, 167, 0, 328, 0, 330, 0, 323, 0, 0, - 57, 0, 0, 75, 0, 0, 0, 84, 100, 0, - 99, 0, 0, 68, 92, 94, 96, 0, 0, 0, - 65, 0, 238, 0, 229, 0, 0, 0, 0, 223, - 0, 0, 0, 271, 0, 214, 0, 0, 0, 205, - 272, 117, 114, 39, 0, 0, 0, 0, 0, 25, - 0, 0, 349, 341, 347, 345, 348, 343, 0, 0, - 0, 313, 305, 311, 0, 142, 326, 331, 329, 178, - 60, 0, 0, 0, 0, 0, 101, 98, 120, 95, - 97, 103, 0, 0, 243, 241, 0, 0, 227, 0, - 226, 0, 230, 273, 0, 0, 221, 219, 44, 42, - 48, 46, 50, 314, 0, 344, 346, 342, 0, 298, - 315, 0, 324, 72, 90, 0, 86, 71, 87, 105, - 102, 0, 0, 156, 239, 255, 256, 224, 228, 222, - 220, 302, 338, 350, 0, 154, 0, 104, 0, 246, - 0, 0, 0, 0, 151, 89, 242, 247, 248, 249, - 0, 0, 0, 351, 339, 312, 153, 240, 0, 0, - 0, 254, 244, 0, 253, 251, 0, 252, 250, 340, - 0, 245 + 0, 0, 0, 117, 0, 0, 122, 121, 109, 0, + 0, 0, 0, 0, 0, 47, 36, 0, 20, 0, + 0, 148, 144, 0, 314, 0, 315, 180, 125, 129, + 0, 159, 158, 157, 318, 0, 0, 323, 0, 325, + 0, 329, 320, 0, 0, 0, 83, 77, 0, 79, + 89, 80, 67, 0, 74, 75, 0, 71, 72, 78, + 81, 86, 76, 68, 91, 0, 0, 0, 56, 0, + 59, 239, 0, 273, 275, 0, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 196, 186, 215, 216, + 0, 211, 0, 0, 0, 202, 0, 214, 213, 229, + 230, 231, 232, 233, 234, 235, 206, 205, 208, 207, + 209, 210, 0, 35, 353, 0, 0, 0, 48, 45, + 43, 49, 40, 0, 0, 23, 331, 146, 295, 297, + 0, 299, 312, 298, 150, 170, 313, 156, 133, 167, + 165, 0, 326, 0, 328, 0, 321, 0, 0, 55, + 0, 0, 73, 0, 0, 0, 82, 98, 0, 97, + 0, 0, 66, 90, 92, 94, 0, 0, 0, 63, + 0, 236, 0, 227, 0, 0, 0, 0, 221, 0, + 0, 0, 269, 0, 212, 0, 0, 0, 203, 270, + 115, 112, 39, 0, 0, 46, 25, 0, 0, 347, + 339, 345, 343, 346, 341, 0, 0, 0, 311, 303, + 309, 0, 140, 324, 329, 327, 176, 58, 0, 0, + 0, 0, 0, 99, 96, 118, 93, 95, 101, 0, + 0, 241, 239, 0, 0, 225, 0, 224, 0, 228, + 271, 0, 0, 219, 217, 44, 42, 312, 0, 342, + 344, 340, 0, 296, 313, 0, 322, 70, 88, 0, + 84, 69, 85, 103, 100, 0, 0, 154, 237, 253, + 254, 222, 226, 220, 218, 300, 336, 348, 0, 152, + 0, 102, 0, 244, 0, 0, 0, 0, 149, 87, + 240, 245, 246, 247, 0, 0, 0, 349, 337, 310, + 151, 238, 0, 0, 0, 252, 242, 0, 251, 249, + 0, 250, 248, 338, 0, 243 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -459, -459, -459, 627, -459, 678, -459, 354, -459, 311, - -459, -459, -459, -459, -309, -78, 174, 360, -459, -459, - -459, 100, -459, 309, -459, -340, -459, -459, -459, -459, - 215, -459, -452, -459, -43, -459, -459, -459, -459, -459, - -459, -142, -459, -459, 462, -187, -85, -459, 32, -50, - -21, -459, -459, -77, 419, -459, -459, -459, -128, -459, - -459, -170, -459, 355, -459, -459, -48, -295, -459, -268, - 516, 513, 365, -147, -208, -459, -459, -459, -459, -459, - -459, 414, -459, -459, -459, 154, -459, -459, -459, -419, - -459, -459, -144, -459, -459, -459, -459, -459, -459, -74, - -459, -459, 589, -89, -459, -459, 595, -459, -459, -458, - 140, -459, -459, -459, -2, -459, -459, 142, 466, -459, - 364, -459, 461, -459, 185, -459, -459, -459, 629, -459, - -459, -459, -459, -373 + -566, -566, -566, 638, -566, 685, -566, 361, -566, 398, + -566, -566, -566, -566, -309, -79, 276, 375, 271, -566, + -566, -566, 420, -566, 317, -566, -333, -566, -566, -566, + -566, 232, -566, -450, -566, -43, -566, -566, -566, -566, + -566, -566, -142, -566, -566, 467, -210, -87, -566, 38, + -50, -29, -566, -566, -85, 444, -566, -566, -566, -130, + -566, -566, -170, -566, 369, -566, -566, -48, -295, -566, + -269, 544, 540, 373, -147, -208, -566, -566, -566, -566, + -566, -566, 453, -566, -566, -566, 195, -566, -566, -566, + -565, -566, -566, -156, -566, -566, -566, -566, -566, -566, + -74, -566, -566, 611, -90, -566, -566, 621, -566, -566, + -447, 183, -566, -566, -566, -2, -566, -566, 187, 503, + -566, 396, -566, 486, -566, 219, -566, -566, -566, 664, + -566, -566, -566, -566, -350 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 19, 20, 21, 22, 73, 259, 260, 23, 66, - 24, 143, 25, 26, 89, 162, 255, 345, 27, 28, - 29, 84, 288, 289, 290, 394, 487, 483, 493, 494, - 495, 291, 496, 30, 93, 31, 251, 252, 32, 33, - 34, 153, 35, 155, 156, 36, 175, 176, 177, 77, - 112, 113, 180, 78, 174, 261, 351, 352, 150, 545, - 624, 116, 267, 268, 363, 108, 185, 262, 129, 130, - 131, 132, 263, 264, 225, 226, 227, 228, 229, 230, - 231, 300, 232, 233, 234, 502, 603, 630, 631, 642, - 235, 236, 198, 199, 200, 237, 238, 239, 240, 241, - 134, 135, 136, 137, 138, 139, 140, 141, 458, 459, - 460, 461, 462, 51, 463, 146, 541, 542, 543, 357, - 275, 276, 277, 371, 477, 37, 38, 63, 64, 464, - 538, 634, 71, 244 + 24, 143, 25, 26, 89, 162, 255, 344, 345, 27, + 28, 29, 84, 288, 289, 290, 394, 486, 482, 492, + 493, 494, 291, 495, 30, 93, 31, 251, 252, 32, + 33, 34, 153, 35, 155, 156, 36, 175, 176, 177, + 77, 112, 113, 180, 78, 174, 261, 351, 352, 150, + 542, 618, 116, 267, 268, 363, 108, 185, 262, 129, + 130, 131, 132, 263, 264, 225, 226, 227, 228, 229, + 230, 231, 300, 232, 233, 234, 501, 597, 624, 625, + 636, 235, 236, 198, 199, 200, 237, 238, 239, 240, + 241, 134, 135, 136, 137, 138, 139, 140, 141, 457, + 458, 459, 460, 461, 51, 462, 146, 538, 539, 540, + 357, 275, 276, 277, 371, 476, 37, 38, 63, 64, + 463, 535, 628, 71, 244 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1197,190 +1194,184 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 41, 479, 224, 44, 95, 265, 213, 133, 52, 415, - 56, 303, 270, 305, 99, 100, 101, 40, 172, 163, - 164, 638, 497, 40, 283, 403, 340, 249, 173, 638, - 182, 623, 449, 478, 269, 178, 271, 273, 178, 149, - 639, 75, 560, 354, 55, 354, 87, 210, 90, 60, - 253, 341, 214, 118, 119, 120, 308, 115, 102, 279, - 39, 308, 284, 119, 120, 422, 48, 445, 183, 76, - 75, 299, 309, 242, 40, 245, 307, 309, 211, 455, - 42, 589, 316, 147, 148, 184, 94, 109, 109, 43, - 61, 158, 423, 49, 303, 215, 216, 217, 166, 167, - 336, 547, 420, 246, 421, 400, 342, 503, 427, 428, + 41, 283, 224, 44, 95, 265, 213, 133, 52, 415, + 56, 303, 270, 305, 99, 100, 101, 172, 163, 164, + 403, 284, 40, 173, 478, 249, 40, 178, 182, 617, + 178, 632, 632, 450, 269, 354, 271, 273, 119, 120, + 477, 75, 633, 557, 149, 496, 87, 279, 90, 115, + 55, 253, 214, 118, 119, 120, 210, 473, 102, 340, + 40, 308, 474, 475, 367, 308, 445, 366, 640, 316, + 109, 299, 242, 354, 308, 76, 307, 309, 454, 645, + 341, 309, 400, 147, 148, 474, 475, 211, 42, 583, + 309, 158, 94, 97, 303, 215, 216, 217, 166, 167, + 336, 334, 420, 246, 421, 342, 110, 502, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 110, 110, 562, 563, 133, 346, 518, - 613, 524, 254, 133, 218, 168, 417, 122, 62, 331, - 474, 605, 214, 118, 119, 120, 85, 86, 212, 617, - 407, 408, 406, 123, 114, 248, 525, 266, 308, 111, - 111, 418, 419, 97, 272, 540, 567, 355, 475, 476, - 219, 644, 645, 306, 309, 507, 343, 344, 54, 353, - 640, 359, 308, 641, 220, 215, 216, 217, 640, 178, - 333, 641, 366, 334, 118, 119, 120, 316, 309, 124, - 125, 126, 98, 214, 118, 119, 120, 281, 124, 54, - 404, 526, 401, 269, 515, 457, 579, 358, 470, 471, - 646, 575, 364, 465, 218, 45, 367, 122, 285, 286, - 287, 651, 118, 119, 120, 46, 221, 222, 121, 475, - 476, 622, 442, 123, 223, 405, 215, 216, 217, 128, - 361, 298, 330, 308, 331, 425, 50, 513, 75, 643, - 219, 133, 353, 510, 511, 316, 47, 65, 308, 309, - 530, 53, 426, 133, 220, 69, 308, 362, 122, 410, - 334, 527, 528, 57, 309, 218, 647, 648, 122, 124, - 125, 126, 309, 58, 123, 446, 615, 480, 368, 411, - 214, 118, 119, 120, 123, 412, 573, 348, 571, 72, - 349, 214, 118, 119, 120, 308, 122, 327, 328, 329, - 330, 219, 331, 626, 59, 369, 221, 222, 67, 68, - 443, 309, 123, 508, 223, 220, 370, 256, 257, 128, - 124, 125, 126, 215, 216, 217, 308, 70, 570, 79, - 124, 125, 126, 411, 301, 216, 217, 81, 566, 509, - 568, 569, 309, 512, 298, 80, 83, 308, 308, 214, - 118, 119, 120, 82, 517, 488, 506, 127, 124, 125, - 126, 88, 218, 309, 309, 122, 91, 221, 222, 308, - 128, 607, 489, 218, 398, 223, 122, 399, 106, 453, - 128, 123, 454, 521, 523, 309, 207, 454, 529, 310, - 92, 207, 123, 216, 217, 127, 599, 550, 219, 561, - 334, 96, 334, 565, 608, 103, 353, 577, 128, 302, - 353, 104, 220, 619, 186, 187, 188, 189, 190, 191, - 490, 491, 594, 220, 492, 595, 311, 124, 125, 126, - 600, 218, 601, 334, 122, 334, 107, 117, 124, 125, - 126, 610, 531, 142, 353, 635, 574, 293, 334, 294, - 123, 144, 649, 145, 633, 334, 636, 627, 628, 629, - 149, 151, 152, 154, 221, 222, 157, 302, 159, 160, - 558, 161, 223, 312, 165, 221, 222, 128, 54, 170, - 171, 220, 532, 223, 173, 179, 181, 533, 128, 201, - 202, 203, 206, 313, 534, 535, 124, 125, 126, 207, - 314, 315, 208, 243, 209, 247, 250, 258, 316, 317, - 274, 536, 114, 282, 15, -350, 537, 292, 295, 296, - 297, 304, 332, 338, 531, 350, 335, 339, 347, 373, - 365, 375, 444, 221, 222, 353, 360, 374, 395, 396, - 75, 223, 413, 531, 416, 424, 128, 397, 318, 319, - 320, 321, 322, 448, 450, 323, 324, 451, 325, 326, - 327, 328, 329, 330, 532, 331, 452, -352, 467, 533, - 472, 473, 501, 481, 1, 482, 534, 535, 484, 485, - 486, 498, 2, 532, 499, 505, 504, 519, 533, 3, - 422, 516, 308, 536, 4, 534, 535, -350, 537, 620, - 331, 1, 520, 522, 5, 539, 544, 6, 7, 2, - 546, 548, 536, 549, 551, -303, 3, 537, 552, 8, - 9, 4, 553, 554, 555, 556, 557, 564, 590, 10, - 578, 5, 11, 572, 6, 7, 576, 580, 581, 582, - 583, 584, 585, 376, 311, 588, 8, 9, 621, 586, - 587, 591, 602, 593, 12, 596, 10, 377, 13, 11, - 597, 378, 379, 380, 381, 382, 598, 383, 616, 606, - 492, 618, 650, 609, 14, 384, 614, 105, 311, 447, - 15, 12, 74, 456, 625, 13, 637, 632, 500, 559, - 337, 312, 402, 409, 278, 468, 204, -304, 466, 604, - 385, 14, 205, 280, 612, 611, 514, 15, 469, 311, - 356, 414, 592, 169, 0, 0, 0, 372, 386, 315, - 387, 388, 16, 17, 18, 312, 316, 317, 0, 0, - 0, 0, 0, 0, 311, 389, 0, 0, 0, 0, - 390, 0, 391, 0, 0, 414, 0, 0, 0, 16, - 17, 18, 392, 315, 0, 0, -353, 0, 0, 0, - 316, 317, 0, 0, 0, 0, 318, 319, 320, 321, - 322, 0, 0, 323, 324, 0, 325, 326, 327, 328, - 329, 330, 0, 331, 315, 393, 0, 0, 0, 0, - 0, 316, -353, 0, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 0, 0, 323, 324, 315, - 325, 326, 327, 328, 329, 330, 316, 331, 0, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, -353, -353, -353, 321, 322, 0, 0, 323, 324, - 0, 325, 326, 327, 328, 329, 330, 0, 331, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -353, - -353, 0, 0, -353, -353, 0, 325, 326, 327, 328, - 329, 330, 0, 331 + 439, 440, 441, 544, 331, 340, 346, 133, 308, 517, + 43, 254, 98, 133, 218, 607, 368, 122, 39, 417, + 406, 168, 111, 599, 309, 611, 523, 559, 560, 266, + 407, 408, 50, 123, 75, 212, 109, 537, 248, 245, + 343, 418, 419, 369, 272, 60, 214, 118, 119, 120, + 219, 524, 564, 306, 370, 353, 54, 316, 48, 359, + 183, 178, 333, 124, 220, 334, 308, 285, 286, 287, + 634, 634, 110, 635, 635, 355, 49, 184, 361, 124, + 125, 126, 309, 404, 422, 401, 61, 281, 53, 215, + 216, 217, 54, 269, 514, 576, 456, 358, 469, 470, + 572, 464, 364, 114, 308, 362, 343, 425, 111, 69, + 330, 423, 331, 410, 221, 222, 214, 118, 119, 120, + 309, 442, 223, 62, 426, 405, 527, 128, 218, 316, + 512, 122, 45, 411, 487, 353, 57, 507, 616, 412, + 65, 133, 46, 509, 510, 506, 58, 123, 293, 308, + 294, 488, 308, 133, 70, 298, 637, 411, 505, 215, + 216, 217, 72, 508, 219, 309, 348, 568, 309, 349, + 609, 75, 79, 47, 308, 446, 479, 59, 220, 327, + 328, 329, 330, 81, 331, 570, 118, 119, 120, 308, + 309, 567, 80, 124, 125, 126, 82, 620, 218, 489, + 490, 122, 298, 491, 83, 309, 308, 528, 398, 88, + 443, 399, 214, 118, 119, 120, 91, 123, 118, 119, + 120, 92, 309, 214, 118, 119, 120, 106, 221, 222, + 121, 638, 639, 308, 219, 601, 223, 563, 96, 565, + 566, 128, 452, 511, 103, 453, 107, 529, 220, 309, + 520, 104, 530, 207, 516, 215, 216, 217, 522, 531, + 532, 453, 117, 124, 125, 126, 301, 216, 217, 528, + 122, 142, 214, 118, 119, 120, 533, 641, 642, 526, + -348, 534, 207, 621, 622, 623, 123, 186, 187, 188, + 189, 190, 191, 593, 218, 67, 68, 122, 221, 222, + 547, 602, 122, 334, 144, 218, 223, 613, 122, 529, + 145, 128, 310, 123, 530, 149, 216, 217, 123, 256, + 257, 531, 532, 528, 123, 558, 562, 151, 334, 353, + 219, 152, 124, 125, 126, 154, 574, 588, 533, 353, + 589, 302, -348, 534, 220, 571, 85, 86, 627, 311, + 630, 157, 159, 594, 218, 220, 334, 122, 160, 124, + 125, 126, 161, 529, 124, 125, 126, 127, 530, 555, + 124, 125, 126, 123, 595, 531, 532, 334, -301, 614, + 128, 604, 629, 643, 353, 334, 334, 165, 54, 170, + 302, 171, 533, 173, 221, 222, 312, 534, 179, 127, + 181, 201, 223, 202, 220, 221, 222, 128, 203, 206, + 207, 208, 128, 223, 243, 209, 313, 250, 128, 124, + 125, 126, 247, 314, 315, 258, 114, 274, 615, 282, + 15, 316, 317, 295, 292, 296, 304, 297, 332, 335, + -302, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 338, 221, 222, 339, 347, 350, 353, + 365, 373, 223, 360, 374, 375, 395, 128, 396, 318, + 319, 320, 321, 322, 397, 75, 323, 324, -350, 325, + 326, 327, 328, 329, 330, 1, 331, 413, 444, 472, + 448, 424, 311, 2, 449, 416, 451, 466, 500, 471, + 3, 504, 1, 480, 481, 4, 483, 484, 485, 497, + 2, 498, 308, 503, 422, 5, 515, 3, 6, 7, + 518, 331, 4, 519, 521, 541, 536, 543, 545, 546, + 8, 9, 5, 548, 549, 6, 7, 550, 551, 312, + 10, 552, 554, 11, 553, 561, 575, 8, 9, 569, + 573, 577, 578, 579, 513, 580, 582, 10, 581, 414, + 11, 584, 585, 311, 596, 12, 608, 315, 587, 13, + 590, 591, 592, 600, 316, 317, 603, 610, 612, 376, + 619, 491, 12, 626, 644, 14, 13, 631, 105, 74, + 455, 15, 311, 377, 447, 337, 499, 378, 379, 380, + 381, 382, 14, 383, 525, 556, 465, 311, 15, 467, + 312, 384, 318, 319, 320, 321, 322, 402, 204, 323, + 324, 278, 325, 326, 327, 328, 329, 330, 205, 331, + 414, 280, 409, 16, 17, 18, 385, 598, 315, -351, + 468, 606, 372, 586, 605, 316, 317, 356, 169, 0, + 16, 17, 18, 0, 386, 0, 387, 388, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 315, 0, 0, + 0, 389, 0, 0, 316, -351, 390, 0, 391, 0, + 0, 0, 315, 318, 319, 320, 321, 322, 392, 316, + 323, 324, 0, 325, 326, 327, 328, 329, 330, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -351, -351, -351, 321, 322, 0, 0, 323, + 324, 393, 325, 326, 327, 328, 329, 330, 0, 331, + -351, -351, 0, 0, -351, -351, 0, 325, 326, 327, + 328, 329, 330, 0, 331 }; static const yytype_int16 yycheck[] = { - 2, 374, 149, 5, 54, 175, 148, 81, 10, 304, - 12, 219, 182, 221, 57, 58, 59, 3, 107, 97, - 98, 6, 395, 3, 211, 3, 24, 155, 12, 6, - 115, 51, 341, 373, 181, 112, 183, 184, 115, 83, - 17, 58, 494, 3, 12, 3, 48, 94, 50, 19, - 113, 49, 3, 4, 5, 6, 116, 78, 60, 203, - 27, 116, 3, 5, 6, 101, 94, 335, 55, 37, - 58, 218, 132, 151, 3, 63, 223, 132, 125, 347, - 3, 539, 136, 85, 86, 72, 54, 9, 9, 3, - 60, 93, 128, 94, 302, 46, 47, 48, 100, 101, - 247, 474, 310, 153, 312, 292, 104, 402, 316, 317, + 2, 211, 149, 5, 54, 175, 148, 81, 10, 304, + 12, 219, 182, 221, 57, 58, 59, 107, 97, 98, + 3, 3, 3, 12, 374, 155, 3, 112, 115, 51, + 115, 6, 6, 342, 181, 3, 183, 184, 5, 6, + 373, 58, 17, 493, 83, 395, 48, 203, 50, 78, + 12, 113, 3, 4, 5, 6, 94, 130, 60, 3, + 3, 116, 158, 159, 62, 116, 335, 55, 633, 136, + 9, 218, 151, 3, 116, 37, 223, 132, 347, 644, + 24, 132, 292, 85, 86, 158, 159, 125, 3, 536, + 132, 93, 54, 94, 302, 46, 47, 48, 100, 101, + 247, 197, 310, 153, 312, 49, 45, 402, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 45, 45, 498, 499, 201, 256, 424, - 588, 24, 195, 207, 85, 103, 196, 88, 3, 193, - 130, 196, 3, 4, 5, 6, 46, 47, 195, 601, - 297, 298, 296, 104, 76, 199, 49, 178, 116, 81, - 81, 308, 309, 94, 115, 125, 506, 125, 158, 159, - 121, 166, 167, 223, 132, 109, 174, 175, 195, 199, - 165, 266, 116, 168, 135, 46, 47, 48, 165, 266, - 196, 168, 55, 199, 4, 5, 6, 136, 132, 150, - 151, 152, 133, 3, 4, 5, 6, 209, 150, 195, - 188, 104, 196, 360, 422, 195, 525, 265, 365, 366, - 639, 516, 270, 351, 85, 70, 62, 88, 169, 170, - 171, 650, 4, 5, 6, 80, 187, 188, 48, 158, - 159, 614, 331, 104, 195, 295, 46, 47, 48, 200, - 90, 112, 191, 116, 193, 104, 98, 194, 58, 632, - 121, 335, 199, 410, 411, 136, 111, 154, 116, 132, - 457, 80, 121, 347, 135, 0, 116, 117, 88, 92, - 199, 174, 175, 70, 132, 85, 166, 167, 88, 150, - 151, 152, 132, 80, 104, 338, 591, 375, 134, 112, - 3, 4, 5, 6, 104, 118, 514, 196, 109, 113, - 199, 3, 4, 5, 6, 116, 88, 188, 189, 190, - 191, 121, 193, 618, 111, 161, 187, 188, 17, 18, - 332, 132, 104, 92, 195, 135, 172, 163, 164, 200, - 150, 151, 152, 46, 47, 48, 116, 198, 118, 3, - 150, 151, 152, 112, 46, 47, 48, 195, 505, 118, - 507, 508, 132, 413, 112, 197, 127, 116, 116, 3, - 4, 5, 6, 94, 424, 104, 125, 187, 150, 151, - 152, 3, 85, 132, 132, 88, 123, 187, 188, 116, - 200, 118, 121, 85, 196, 195, 88, 199, 97, 196, - 200, 104, 199, 196, 196, 132, 199, 199, 196, 17, - 127, 199, 104, 47, 48, 187, 558, 196, 121, 196, - 199, 133, 199, 196, 571, 125, 199, 196, 200, 121, - 199, 199, 135, 603, 138, 139, 140, 141, 142, 143, - 169, 170, 196, 135, 173, 199, 54, 150, 151, 152, - 196, 85, 196, 199, 88, 199, 124, 3, 150, 151, - 152, 196, 26, 4, 199, 196, 516, 195, 199, 197, - 104, 121, 196, 3, 621, 199, 623, 162, 163, 164, - 83, 93, 195, 3, 187, 188, 46, 121, 196, 196, - 492, 4, 195, 101, 3, 187, 188, 200, 195, 195, - 6, 135, 66, 195, 12, 115, 126, 71, 200, 195, - 4, 4, 196, 121, 78, 79, 150, 151, 152, 199, - 128, 129, 46, 3, 131, 176, 91, 3, 136, 137, - 119, 95, 76, 3, 113, 99, 100, 125, 195, 195, - 195, 193, 98, 39, 26, 94, 195, 195, 195, 125, - 55, 93, 3, 187, 188, 199, 199, 195, 195, 172, - 58, 195, 195, 26, 196, 195, 200, 172, 176, 177, - 178, 179, 180, 4, 4, 183, 184, 4, 186, 187, - 188, 189, 190, 191, 66, 193, 4, 0, 3, 71, - 172, 161, 77, 195, 7, 195, 78, 79, 195, 195, - 195, 195, 15, 66, 195, 94, 196, 104, 71, 22, - 101, 195, 116, 95, 27, 78, 79, 99, 100, 82, - 193, 7, 194, 3, 37, 199, 69, 40, 41, 15, - 62, 160, 95, 196, 6, 199, 22, 100, 6, 52, - 53, 27, 6, 6, 6, 104, 172, 195, 3, 62, - 4, 37, 65, 196, 40, 41, 196, 4, 4, 4, - 196, 99, 78, 11, 54, 99, 52, 53, 131, 78, - 78, 126, 105, 196, 87, 196, 62, 25, 91, 65, - 196, 29, 30, 31, 32, 33, 196, 35, 6, 196, - 173, 126, 116, 196, 107, 43, 195, 70, 54, 339, - 113, 87, 24, 349, 196, 91, 196, 195, 399, 494, - 248, 101, 293, 299, 201, 360, 127, 199, 353, 565, - 68, 107, 127, 207, 584, 583, 116, 113, 364, 54, - 264, 121, 547, 104, -1, -1, -1, 276, 86, 129, - 88, 89, 155, 156, 157, 101, 136, 137, -1, -1, - -1, -1, -1, -1, 54, 103, -1, -1, -1, -1, - 108, -1, 110, -1, -1, 121, -1, -1, -1, 155, - 156, 157, 120, 129, -1, -1, 101, -1, -1, -1, - 136, 137, -1, -1, -1, -1, 176, 177, 178, 179, - 180, -1, -1, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 129, 153, -1, -1, -1, -1, - -1, 136, 137, -1, -1, -1, -1, -1, -1, -1, - 176, 177, 178, 179, 180, -1, -1, 183, 184, 129, - 186, 187, 188, 189, 190, 191, 136, 193, -1, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 176, 177, 178, 179, 180, -1, -1, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, - 180, -1, -1, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193 + 328, 329, 330, 473, 191, 3, 256, 201, 116, 424, + 3, 193, 133, 207, 85, 582, 134, 88, 27, 194, + 296, 103, 81, 194, 132, 595, 24, 497, 498, 178, + 297, 298, 98, 104, 58, 193, 9, 125, 197, 63, + 104, 308, 309, 161, 115, 19, 3, 4, 5, 6, + 121, 49, 505, 223, 172, 197, 193, 136, 94, 266, + 55, 266, 194, 150, 135, 197, 116, 169, 170, 171, + 165, 165, 45, 168, 168, 125, 94, 72, 90, 150, + 151, 152, 132, 186, 101, 194, 60, 209, 80, 46, + 47, 48, 193, 360, 422, 524, 193, 265, 365, 366, + 515, 351, 270, 76, 116, 117, 104, 104, 81, 0, + 189, 128, 191, 92, 185, 186, 3, 4, 5, 6, + 132, 331, 193, 3, 121, 295, 456, 198, 85, 136, + 192, 88, 70, 112, 104, 197, 70, 92, 608, 118, + 154, 335, 80, 410, 411, 109, 80, 104, 193, 116, + 195, 121, 116, 347, 196, 112, 626, 112, 125, 46, + 47, 48, 113, 118, 121, 132, 194, 109, 132, 197, + 585, 58, 3, 111, 116, 338, 375, 111, 135, 186, + 187, 188, 189, 193, 191, 513, 4, 5, 6, 116, + 132, 118, 195, 150, 151, 152, 94, 612, 85, 169, + 170, 88, 112, 173, 127, 132, 116, 26, 194, 3, + 332, 197, 3, 4, 5, 6, 123, 104, 4, 5, + 6, 127, 132, 3, 4, 5, 6, 97, 185, 186, + 48, 166, 167, 116, 121, 118, 193, 504, 133, 506, + 507, 198, 194, 413, 125, 197, 124, 66, 135, 132, + 194, 197, 71, 197, 424, 46, 47, 48, 194, 78, + 79, 197, 3, 150, 151, 152, 46, 47, 48, 26, + 88, 4, 3, 4, 5, 6, 95, 166, 167, 194, + 99, 100, 197, 162, 163, 164, 104, 138, 139, 140, + 141, 142, 143, 555, 85, 17, 18, 88, 185, 186, + 194, 568, 88, 197, 121, 85, 193, 597, 88, 66, + 3, 198, 17, 104, 71, 83, 47, 48, 104, 163, + 164, 78, 79, 26, 104, 194, 194, 93, 197, 197, + 121, 193, 150, 151, 152, 3, 194, 194, 95, 197, + 197, 121, 99, 100, 135, 515, 46, 47, 615, 54, + 617, 46, 194, 194, 85, 135, 197, 88, 194, 150, + 151, 152, 4, 66, 150, 151, 152, 185, 71, 491, + 150, 151, 152, 104, 194, 78, 79, 197, 197, 82, + 198, 194, 194, 194, 197, 197, 197, 3, 193, 193, + 121, 6, 95, 12, 185, 186, 101, 100, 115, 185, + 126, 193, 193, 4, 135, 185, 186, 198, 4, 194, + 197, 46, 198, 193, 3, 131, 121, 91, 198, 150, + 151, 152, 174, 128, 129, 3, 76, 119, 131, 3, + 113, 136, 137, 193, 125, 193, 191, 193, 98, 193, + 197, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 39, 185, 186, 193, 193, 94, 197, + 55, 125, 193, 197, 193, 93, 193, 198, 172, 174, + 175, 176, 177, 178, 172, 58, 181, 182, 0, 184, + 185, 186, 187, 188, 189, 7, 191, 193, 3, 161, + 4, 193, 54, 15, 4, 194, 4, 3, 77, 172, + 22, 94, 7, 193, 193, 27, 193, 193, 193, 193, + 15, 193, 116, 194, 101, 37, 193, 22, 40, 41, + 104, 191, 27, 192, 3, 69, 197, 62, 160, 194, + 52, 53, 37, 6, 6, 40, 41, 6, 6, 101, + 62, 6, 172, 65, 104, 193, 4, 52, 53, 194, + 194, 194, 99, 78, 116, 78, 99, 62, 78, 121, + 65, 3, 126, 54, 105, 87, 193, 129, 194, 91, + 194, 194, 194, 194, 136, 137, 194, 6, 126, 11, + 194, 173, 87, 193, 116, 107, 91, 194, 70, 24, + 349, 113, 54, 25, 339, 248, 399, 29, 30, 31, + 32, 33, 107, 35, 453, 493, 353, 54, 113, 360, + 101, 43, 174, 175, 176, 177, 178, 293, 127, 181, + 182, 201, 184, 185, 186, 187, 188, 189, 127, 191, + 121, 207, 299, 155, 156, 157, 68, 562, 129, 101, + 364, 578, 276, 544, 577, 136, 137, 264, 104, -1, + 155, 156, 157, -1, 86, -1, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, + -1, 103, -1, -1, 136, 137, 108, -1, 110, -1, + -1, -1, 129, 174, 175, 176, 177, 178, 120, 136, + 181, 182, -1, 184, 185, 186, 187, 188, 189, -1, + 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 174, 175, 176, 177, 178, -1, -1, 181, + 182, 153, 184, 185, 186, 187, 188, 189, -1, 191, + 177, 178, -1, -1, 181, 182, -1, 184, 185, 186, + 187, 188, 189, -1, 191 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1388,112 +1379,111 @@ static const yytype_int16 yycheck[] = static const yytype_int16 yystos[] = { 0, 7, 15, 22, 27, 37, 40, 41, 52, 53, - 62, 65, 87, 91, 107, 113, 155, 156, 157, 202, - 203, 204, 205, 209, 211, 213, 214, 219, 220, 221, - 234, 236, 239, 240, 241, 243, 246, 326, 327, 27, - 3, 315, 3, 3, 315, 70, 80, 111, 94, 94, - 98, 314, 315, 80, 195, 249, 315, 70, 80, 111, - 19, 60, 3, 328, 329, 154, 210, 210, 210, 0, - 198, 333, 113, 206, 206, 58, 249, 250, 254, 3, - 197, 195, 94, 127, 222, 222, 222, 315, 3, 215, - 315, 123, 127, 235, 249, 250, 133, 94, 133, 235, - 235, 235, 315, 125, 199, 204, 97, 124, 266, 9, - 45, 81, 251, 252, 76, 251, 262, 3, 4, 5, - 6, 48, 88, 104, 150, 151, 152, 187, 200, 269, - 270, 271, 272, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 4, 212, 121, 3, 316, 315, 315, 83, - 259, 93, 195, 242, 3, 244, 245, 46, 315, 196, - 196, 4, 216, 216, 216, 3, 315, 315, 249, 329, - 195, 6, 304, 12, 255, 247, 248, 249, 254, 115, - 253, 126, 247, 55, 72, 267, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 293, 294, - 295, 195, 4, 4, 303, 307, 196, 199, 46, 131, - 94, 125, 195, 242, 3, 46, 47, 48, 85, 121, - 135, 187, 188, 195, 274, 275, 276, 277, 278, 279, - 280, 281, 283, 284, 285, 291, 292, 296, 297, 298, - 299, 300, 216, 3, 334, 63, 250, 176, 199, 259, - 91, 237, 238, 113, 195, 217, 217, 217, 3, 207, - 208, 256, 268, 273, 274, 262, 251, 263, 264, 274, - 262, 274, 115, 274, 119, 321, 322, 323, 272, 293, - 271, 315, 3, 246, 3, 169, 170, 171, 223, 224, - 225, 232, 125, 195, 197, 195, 195, 195, 112, 274, - 282, 46, 121, 275, 193, 275, 250, 274, 116, 132, - 17, 54, 101, 121, 128, 129, 136, 137, 176, 177, - 178, 179, 180, 183, 184, 186, 187, 188, 189, 190, - 191, 193, 98, 196, 199, 195, 274, 245, 39, 195, - 24, 49, 104, 174, 175, 218, 259, 195, 196, 199, - 94, 257, 258, 199, 3, 125, 319, 320, 267, 247, - 199, 90, 117, 265, 267, 55, 55, 62, 134, 161, - 172, 324, 323, 125, 195, 93, 11, 25, 29, 30, + 62, 65, 87, 91, 107, 113, 155, 156, 157, 200, + 201, 202, 203, 207, 209, 211, 212, 218, 219, 220, + 233, 235, 238, 239, 240, 242, 245, 325, 326, 27, + 3, 314, 3, 3, 314, 70, 80, 111, 94, 94, + 98, 313, 314, 80, 193, 248, 314, 70, 80, 111, + 19, 60, 3, 327, 328, 154, 208, 208, 208, 0, + 196, 332, 113, 204, 204, 58, 248, 249, 253, 3, + 195, 193, 94, 127, 221, 221, 221, 314, 3, 213, + 314, 123, 127, 234, 248, 249, 133, 94, 133, 234, + 234, 234, 314, 125, 197, 202, 97, 124, 265, 9, + 45, 81, 250, 251, 76, 250, 261, 3, 4, 5, + 6, 48, 88, 104, 150, 151, 152, 185, 198, 268, + 269, 270, 271, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 4, 210, 121, 3, 315, 314, 314, 83, + 258, 93, 193, 241, 3, 243, 244, 46, 314, 194, + 194, 4, 214, 214, 214, 3, 314, 314, 248, 328, + 193, 6, 303, 12, 254, 246, 247, 248, 253, 115, + 252, 126, 246, 55, 72, 266, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 292, 293, + 294, 193, 4, 4, 302, 306, 194, 197, 46, 131, + 94, 125, 193, 241, 3, 46, 47, 48, 85, 121, + 135, 185, 186, 193, 273, 274, 275, 276, 277, 278, + 279, 280, 282, 283, 284, 290, 291, 295, 296, 297, + 298, 299, 214, 3, 333, 63, 249, 174, 197, 258, + 91, 236, 237, 113, 193, 215, 215, 215, 3, 205, + 206, 255, 267, 272, 273, 261, 250, 262, 263, 273, + 261, 273, 115, 273, 119, 320, 321, 322, 271, 292, + 270, 314, 3, 245, 3, 169, 170, 171, 222, 223, + 224, 231, 125, 193, 195, 193, 193, 193, 112, 273, + 281, 46, 121, 274, 191, 274, 249, 273, 116, 132, + 17, 54, 101, 121, 128, 129, 136, 137, 174, 175, + 176, 177, 178, 181, 182, 184, 185, 186, 187, 188, + 189, 191, 98, 194, 197, 193, 273, 244, 39, 193, + 3, 24, 49, 104, 216, 217, 258, 193, 194, 197, + 94, 256, 257, 197, 3, 125, 318, 319, 266, 246, + 197, 90, 117, 264, 266, 55, 55, 62, 134, 161, + 172, 323, 322, 125, 193, 93, 11, 25, 29, 30, 31, 32, 33, 35, 43, 68, 86, 88, 89, 103, - 108, 110, 120, 153, 226, 195, 172, 172, 196, 199, - 246, 196, 255, 3, 188, 250, 293, 274, 274, 282, - 92, 112, 118, 195, 121, 268, 196, 196, 274, 274, - 275, 275, 101, 128, 195, 104, 121, 275, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 304, 315, 3, 270, 235, 218, 4, 215, - 4, 4, 4, 196, 199, 270, 208, 195, 309, 310, - 311, 312, 313, 315, 330, 259, 273, 3, 264, 321, - 274, 274, 172, 161, 130, 158, 159, 325, 226, 334, - 216, 195, 195, 228, 195, 195, 195, 227, 104, 121, - 169, 170, 173, 229, 230, 231, 233, 334, 195, 195, - 224, 77, 286, 268, 196, 94, 125, 109, 92, 118, - 274, 274, 250, 194, 116, 275, 195, 250, 268, 104, - 194, 196, 3, 196, 24, 49, 104, 174, 175, 196, - 246, 26, 66, 71, 78, 79, 95, 100, 331, 199, - 125, 317, 318, 319, 69, 260, 62, 334, 160, 196, - 196, 6, 6, 6, 6, 6, 104, 172, 315, 231, - 233, 196, 334, 334, 195, 196, 274, 226, 274, 274, - 118, 109, 196, 275, 250, 268, 196, 196, 4, 215, - 4, 4, 4, 196, 99, 78, 78, 78, 99, 310, - 3, 126, 325, 196, 196, 199, 196, 196, 196, 242, - 196, 196, 105, 287, 286, 196, 196, 118, 274, 196, - 196, 318, 311, 310, 195, 268, 6, 233, 126, 262, - 82, 131, 334, 51, 261, 196, 268, 162, 163, 164, - 288, 289, 195, 274, 332, 196, 274, 196, 6, 17, - 165, 168, 290, 334, 166, 167, 290, 166, 167, 196, - 116, 290 + 108, 110, 120, 153, 225, 193, 172, 172, 194, 197, + 245, 194, 254, 3, 186, 249, 292, 273, 273, 281, + 92, 112, 118, 193, 121, 267, 194, 194, 273, 273, + 274, 274, 101, 128, 193, 104, 121, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 303, 314, 3, 269, 234, 216, 4, 4, + 213, 4, 194, 197, 269, 206, 193, 308, 309, 310, + 311, 312, 314, 329, 258, 272, 3, 263, 320, 273, + 273, 172, 161, 130, 158, 159, 324, 225, 333, 214, + 193, 193, 227, 193, 193, 193, 226, 104, 121, 169, + 170, 173, 228, 229, 230, 232, 333, 193, 193, 223, + 77, 285, 267, 194, 94, 125, 109, 92, 118, 273, + 273, 249, 192, 116, 274, 193, 249, 267, 104, 192, + 194, 3, 194, 24, 49, 217, 194, 245, 26, 66, + 71, 78, 79, 95, 100, 330, 197, 125, 316, 317, + 318, 69, 259, 62, 333, 160, 194, 194, 6, 6, + 6, 6, 6, 104, 172, 314, 230, 232, 194, 333, + 333, 193, 194, 273, 225, 273, 273, 118, 109, 194, + 274, 249, 267, 194, 194, 4, 213, 194, 99, 78, + 78, 78, 99, 309, 3, 126, 324, 194, 194, 197, + 194, 194, 194, 241, 194, 194, 105, 286, 285, 194, + 194, 118, 273, 194, 194, 317, 310, 309, 193, 267, + 6, 232, 126, 261, 82, 131, 333, 51, 260, 194, + 267, 162, 163, 164, 287, 288, 193, 273, 331, 194, + 273, 194, 6, 17, 165, 168, 289, 333, 166, 167, + 289, 166, 167, 194, 116, 289 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 201, 202, 203, 203, 204, 204, 204, 204, 204, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 206, 206, 207, 207, 208, 208, 209, 209, 209, 210, - 210, 211, 212, 213, 213, 214, 214, 215, 216, 217, - 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 219, 219, 220, 220, 220, 221, 221, 221, - 221, 221, 222, 222, 223, 223, 224, 224, 225, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 227, 227, 228, - 228, 228, 229, 229, 230, 230, 230, 230, 231, 231, - 231, 231, 232, 232, 232, 233, 234, 234, 234, 234, - 235, 235, 236, 237, 238, 239, 240, 241, 241, 242, - 242, 243, 244, 244, 245, 246, 246, 246, 247, 247, - 248, 248, 249, 249, 250, 250, 251, 252, 252, 252, - 253, 253, 254, 255, 255, 256, 257, 257, 258, 259, - 259, 260, 260, 261, 261, 262, 262, 263, 263, 264, - 265, 265, 265, 266, 266, 267, 267, 267, 267, 267, - 267, 268, 268, 269, 269, 270, 270, 271, 271, 272, - 272, 272, 273, 274, 274, 274, 274, 274, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, - 276, 277, 277, 277, 277, 277, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 279, 279, 280, - 280, 280, 280, 281, 281, 281, 281, 282, 282, 283, - 283, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 286, 286, 287, 287, 288, 288, 288, 289, 289, 289, - 290, 290, 290, 290, 290, 291, 292, 293, 293, 293, - 293, 293, 293, 294, 294, 294, 294, 294, 294, 295, - 295, 296, 297, 298, 299, 299, 299, 299, 300, 300, - 300, 300, 300, 300, 300, 301, 302, 302, 303, 303, - 304, 305, 306, 307, 307, 307, 308, 309, 309, 310, - 310, 311, 311, 312, 312, 313, 314, 315, 315, 316, + 0, 199, 200, 201, 201, 202, 202, 202, 202, 202, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 204, 204, 205, 205, 206, 206, 207, 207, 207, 208, + 208, 209, 210, 211, 211, 212, 212, 213, 214, 215, + 215, 215, 216, 216, 216, 216, 216, 216, 217, 217, + 218, 218, 219, 219, 219, 220, 220, 220, 220, 220, + 221, 221, 222, 222, 223, 223, 224, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 226, 226, 227, 227, 227, + 228, 228, 229, 229, 229, 229, 230, 230, 230, 230, + 231, 231, 231, 232, 233, 233, 233, 233, 234, 234, + 235, 236, 237, 238, 239, 240, 240, 241, 241, 242, + 243, 243, 244, 245, 245, 245, 246, 246, 247, 247, + 248, 248, 249, 249, 250, 251, 251, 251, 252, 252, + 253, 254, 254, 255, 256, 256, 257, 258, 258, 259, + 259, 260, 260, 261, 261, 262, 262, 263, 264, 264, + 264, 265, 265, 266, 266, 266, 266, 266, 266, 267, + 267, 268, 268, 269, 269, 270, 270, 271, 271, 271, + 272, 273, 273, 273, 273, 273, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 275, 275, 276, + 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 278, 278, 279, 279, 279, + 279, 280, 280, 280, 280, 281, 281, 282, 282, 283, + 283, 283, 283, 283, 283, 283, 284, 284, 285, 285, + 286, 286, 287, 287, 287, 288, 288, 288, 289, 289, + 289, 289, 289, 290, 291, 292, 292, 292, 292, 292, + 292, 293, 293, 293, 293, 293, 293, 294, 294, 295, + 296, 297, 298, 298, 298, 298, 299, 299, 299, 299, + 299, 299, 299, 300, 301, 301, 302, 302, 303, 304, + 305, 306, 306, 306, 307, 308, 308, 309, 309, 310, + 310, 311, 311, 312, 313, 314, 314, 315, 315, 316, 316, 317, 317, 318, 318, 319, 319, 320, 320, 321, - 321, 322, 322, 323, 323, 324, 324, 324, 324, 325, - 325, 325, 326, 326, 327, 328, 328, 329, 330, 330, - 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 332, 333, 333, 334, 334 + 321, 322, 322, 323, 323, 323, 323, 324, 324, 324, + 325, 325, 326, 327, 327, 328, 329, 329, 329, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, + 332, 332, 333, 333 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1503,38 +1493,38 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 0, 1, 3, 1, 4, 2, 2, 2, 1, 0, 4, 1, 2, 5, 7, 6, 1, 1, 4, - 3, 0, 4, 2, 4, 2, 4, 2, 4, 2, - 4, 2, 5, 5, 2, 3, 2, 8, 7, 6, - 9, 7, 3, 0, 1, 3, 1, 1, 3, 1, - 1, 4, 4, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 4, 3, 0, 5, - 3, 0, 1, 0, 1, 2, 1, 2, 2, 1, - 1, 2, 5, 4, 6, 3, 4, 4, 3, 4, - 2, 0, 5, 1, 4, 4, 2, 8, 5, 3, - 0, 5, 1, 3, 3, 2, 2, 6, 1, 1, - 1, 3, 3, 3, 4, 6, 2, 1, 1, 1, - 1, 0, 7, 1, 0, 1, 1, 0, 2, 2, - 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, - 1, 1, 0, 2, 0, 2, 2, 4, 2, 4, - 0, 1, 3, 1, 0, 1, 3, 1, 6, 1, - 2, 2, 2, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 2, 2, 2, 3, 4, 1, 3, 3, 3, - 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, - 6, 5, 6, 4, 6, 3, 5, 4, 5, 4, - 5, 3, 3, 3, 3, 3, 3, 3, 4, 6, - 6, 0, 3, 0, 2, 5, 0, 1, 1, 1, - 2, 2, 2, 2, 1, 6, 6, 1, 1, 1, + 3, 0, 4, 2, 4, 2, 3, 1, 2, 2, + 5, 5, 2, 3, 2, 8, 7, 6, 9, 7, + 3, 0, 1, 3, 1, 1, 3, 1, 1, 4, + 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 4, 3, 0, 5, 3, 0, + 1, 0, 1, 2, 1, 2, 2, 1, 1, 2, + 5, 4, 6, 3, 4, 4, 3, 4, 2, 0, + 5, 1, 4, 4, 2, 8, 5, 3, 0, 5, + 1, 3, 3, 2, 2, 6, 1, 1, 1, 3, + 3, 3, 4, 6, 2, 1, 1, 1, 1, 0, + 7, 1, 0, 1, 1, 0, 2, 2, 0, 4, + 0, 2, 0, 3, 0, 1, 3, 2, 1, 1, + 0, 2, 0, 2, 2, 4, 2, 4, 0, 1, + 3, 1, 0, 1, 3, 1, 6, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, + 2, 2, 3, 4, 1, 3, 3, 3, 3, 3, + 3, 3, 4, 3, 3, 3, 3, 5, 6, 5, + 6, 4, 6, 3, 5, 4, 5, 4, 5, 3, + 3, 3, 3, 3, 3, 3, 4, 6, 6, 0, + 3, 0, 2, 5, 0, 1, 1, 1, 2, 2, + 2, 2, 1, 6, 6, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 4, 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 3, 2, 1, 1, 3, 1, - 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, - 0, 1, 5, 1, 0, 2, 1, 1, 0, 1, - 0, 1, 2, 3, 5, 1, 3, 1, 2, 2, - 1, 0, 1, 0, 2, 1, 3, 3, 4, 6, - 8, 1, 2, 1, 2, 1, 2, 1, 1, 1, - 0, 1, 1, 0, 1, 3 + 2, 2, 3, 2, 1, 1, 3, 1, 1, 1, + 4, 1, 3, 2, 1, 1, 3, 1, 0, 1, + 5, 1, 0, 2, 1, 1, 0, 1, 0, 1, + 2, 3, 5, 1, 3, 1, 2, 2, 1, 0, + 1, 0, 2, 1, 3, 3, 4, 6, 8, 1, + 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, + 1, 0, 1, 3 }; @@ -2098,31 +2088,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 192 "bison_parser.y" +#line 193 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2104 "bison_parser.cpp" +#line 2094 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 192 "bison_parser.y" +#line 193 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2110 "bison_parser.cpp" +#line 2100 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2116 "bison_parser.cpp" +#line 2106 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2122 "bison_parser.cpp" +#line 2112 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).stmt_vec)) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2131,23 +2121,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2135 "bison_parser.cpp" +#line 2125 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2141 "bison_parser.cpp" +#line 2131 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2147 "bison_parser.cpp" +#line 2137 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2156,11 +2146,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2160 "bison_parser.cpp" +#line 2150 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2169,95 +2159,101 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2173 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2179 "bison_parser.cpp" +#line 2169 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2185 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2191 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 192 "bison_parser.y" +#line 193 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2197 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2203 "bison_parser.cpp" +#line 2193 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2209 "bison_parser.cpp" +#line 2199 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2215 "bison_parser.cpp" +#line 2205 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 192 "bison_parser.y" +#line 193 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2221 "bison_parser.cpp" +#line 2211 "bison_parser.cpp" break; case YYSYMBOL_opt_import_export_options: /* opt_import_export_options */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2227 "bison_parser.cpp" +#line 2217 "bison_parser.cpp" break; case YYSYMBOL_import_export_options: /* import_export_options */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2233 "bison_parser.cpp" +#line 2223 "bison_parser.cpp" + break; + + case YYSYMBOL_csv_import_export_options: /* csv_import_export_options */ +#line 202 "bison_parser.y" + { delete (((*yyvaluep).csv_import_export_option_t)); } +#line 2229 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2239 "bison_parser.cpp" +#line 2235 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2245 "bison_parser.cpp" +#line 2241 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2251 "bison_parser.cpp" +#line 2247 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2257 "bison_parser.cpp" +#line 2253 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).table_element_vec)) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2266,119 +2262,119 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2270 "bison_parser.cpp" +#line 2266 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2276 "bison_parser.cpp" +#line 2272 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2282 "bison_parser.cpp" +#line 2278 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2288 "bison_parser.cpp" +#line 2284 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2294 "bison_parser.cpp" +#line 2290 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2300 "bison_parser.cpp" +#line 2296 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2306 "bison_parser.cpp" +#line 2302 "bison_parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2312 "bison_parser.cpp" +#line 2308 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2318 "bison_parser.cpp" +#line 2314 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2324 "bison_parser.cpp" +#line 2320 "bison_parser.cpp" break; case YYSYMBOL_references_spec: /* references_spec */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).references_spec_t)); } -#line 2330 "bison_parser.cpp" +#line 2326 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2336 "bison_parser.cpp" +#line 2332 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2342 "bison_parser.cpp" +#line 2338 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2348 "bison_parser.cpp" +#line 2344 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2354 "bison_parser.cpp" +#line 2350 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2360 "bison_parser.cpp" +#line 2356 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2366 "bison_parser.cpp" +#line 2362 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2372 "bison_parser.cpp" +#line 2368 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2378 "bison_parser.cpp" +#line 2374 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 184 "bison_parser.y" +#line 185 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2387,17 +2383,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2391 "bison_parser.cpp" +#line 2387 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2397 "bison_parser.cpp" +#line 2393 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).update_vec)) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2406,77 +2402,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2410 "bison_parser.cpp" +#line 2406 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2416 "bison_parser.cpp" +#line 2412 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2422 "bison_parser.cpp" +#line 2418 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2428 "bison_parser.cpp" +#line 2424 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2434 "bison_parser.cpp" +#line 2430 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2440 "bison_parser.cpp" +#line 2436 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2446 "bison_parser.cpp" +#line 2442 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2452 "bison_parser.cpp" +#line 2448 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2458 "bison_parser.cpp" +#line 2454 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2464 "bison_parser.cpp" +#line 2460 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2470 "bison_parser.cpp" +#line 2466 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2476 "bison_parser.cpp" +#line 2472 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2485,41 +2481,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2489 "bison_parser.cpp" +#line 2485 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2495 "bison_parser.cpp" +#line 2491 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2501 "bison_parser.cpp" +#line 2497 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2507 "bison_parser.cpp" +#line 2503 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2513 "bison_parser.cpp" +#line 2509 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2519 "bison_parser.cpp" +#line 2515 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2528,11 +2524,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2532 "bison_parser.cpp" +#line 2528 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2541,35 +2537,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2545 "bison_parser.cpp" +#line 2541 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2551 "bison_parser.cpp" +#line 2547 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2557 "bison_parser.cpp" +#line 2553 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2563 "bison_parser.cpp" +#line 2559 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2569 "bison_parser.cpp" +#line 2565 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2578,11 +2574,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2582 "bison_parser.cpp" +#line 2578 "bison_parser.cpp" break; case YYSYMBOL_opt_extended_literal_list: /* opt_extended_literal_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2591,11 +2587,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2595 "bison_parser.cpp" +#line 2591 "bison_parser.cpp" break; case YYSYMBOL_extended_literal_list: /* extended_literal_list */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2604,107 +2600,107 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2608 "bison_parser.cpp" +#line 2604 "bison_parser.cpp" break; case YYSYMBOL_casted_extended_literal: /* casted_extended_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2614 "bison_parser.cpp" +#line 2610 "bison_parser.cpp" break; case YYSYMBOL_extended_literal: /* extended_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2620 "bison_parser.cpp" +#line 2616 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2626 "bison_parser.cpp" +#line 2622 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2632 "bison_parser.cpp" +#line 2628 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2638 "bison_parser.cpp" +#line 2634 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2644 "bison_parser.cpp" +#line 2640 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2650 "bison_parser.cpp" +#line 2646 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2656 "bison_parser.cpp" +#line 2652 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2662 "bison_parser.cpp" +#line 2658 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2668 "bison_parser.cpp" +#line 2664 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2674 "bison_parser.cpp" +#line 2670 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2680 "bison_parser.cpp" +#line 2676 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2686 "bison_parser.cpp" +#line 2682 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2692 "bison_parser.cpp" +#line 2688 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2698 "bison_parser.cpp" +#line 2694 "bison_parser.cpp" break; case YYSYMBOL_opt_window: /* opt_window */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).window_description)); } -#line 2704 "bison_parser.cpp" +#line 2700 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2713,155 +2709,155 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2717 "bison_parser.cpp" +#line 2713 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2723 "bison_parser.cpp" +#line 2719 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2729 "bison_parser.cpp" +#line 2725 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2735 "bison_parser.cpp" +#line 2731 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2741 "bison_parser.cpp" +#line 2737 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2747 "bison_parser.cpp" +#line 2743 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2753 "bison_parser.cpp" +#line 2749 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2759 "bison_parser.cpp" +#line 2755 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2765 "bison_parser.cpp" +#line 2761 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2771 "bison_parser.cpp" +#line 2767 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2777 "bison_parser.cpp" +#line 2773 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2783 "bison_parser.cpp" +#line 2779 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2789 "bison_parser.cpp" +#line 2785 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2795 "bison_parser.cpp" +#line 2791 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2801 "bison_parser.cpp" +#line 2797 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2807 "bison_parser.cpp" +#line 2803 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2813 "bison_parser.cpp" +#line 2809 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2819 "bison_parser.cpp" +#line 2815 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2825 "bison_parser.cpp" +#line 2821 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2831 "bison_parser.cpp" +#line 2827 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2837 "bison_parser.cpp" +#line 2833 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2843 "bison_parser.cpp" +#line 2839 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2849 "bison_parser.cpp" +#line 2845 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2855 "bison_parser.cpp" +#line 2851 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2861 "bison_parser.cpp" +#line 2857 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 193 "bison_parser.y" +#line 194 "bison_parser.y" { if (((*yyvaluep).table_vec)) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2870,134 +2866,134 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2874 "bison_parser.cpp" +#line 2870 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2880 "bison_parser.cpp" +#line 2876 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2886 "bison_parser.cpp" +#line 2882 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free(((*yyvaluep).table_name).name); free(((*yyvaluep).table_name).schema); } -#line 2895 "bison_parser.cpp" +#line 2891 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 192 "bison_parser.y" +#line 193 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2901 "bison_parser.cpp" +#line 2897 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2907 "bison_parser.cpp" +#line 2903 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2913 "bison_parser.cpp" +#line 2909 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2919 "bison_parser.cpp" +#line 2915 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2925 "bison_parser.cpp" +#line 2921 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2931 "bison_parser.cpp" +#line 2927 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2937 "bison_parser.cpp" +#line 2933 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2943 "bison_parser.cpp" +#line 2939 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2949 "bison_parser.cpp" +#line 2945 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2955 "bison_parser.cpp" +#line 2951 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2961 "bison_parser.cpp" +#line 2957 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2967 "bison_parser.cpp" +#line 2963 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2973 "bison_parser.cpp" +#line 2969 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2979 "bison_parser.cpp" +#line 2975 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2985 "bison_parser.cpp" +#line 2981 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 179 "bison_parser.y" +#line 180 "bison_parser.y" { } -#line 2991 "bison_parser.cpp" +#line 2987 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 201 "bison_parser.y" +#line 202 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2997 "bison_parser.cpp" +#line 2993 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 184 "bison_parser.y" +#line 185 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -3006,7 +3002,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 3010 "bison_parser.cpp" +#line 3006 "bison_parser.cpp" break; default: @@ -3114,7 +3110,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3118 "bison_parser.cpp" +#line 3114 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3325,7 +3321,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 336 "bison_parser.y" +#line 337 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3343,236 +3339,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3347 "bison_parser.cpp" +#line 3343 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 355 "bison_parser.y" +#line 356 "bison_parser.y" { (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 3358 "bison_parser.cpp" +#line 3354 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 361 "bison_parser.y" +#line 362 "bison_parser.y" { (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 3369 "bison_parser.cpp" +#line 3365 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 368 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3378 "bison_parser.cpp" +#line 3374 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 372 "bison_parser.y" +#line 373 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3387 "bison_parser.cpp" +#line 3383 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 376 "bison_parser.y" +#line 377 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3393 "bison_parser.cpp" +#line 3389 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 377 "bison_parser.y" +#line 378 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3399 "bison_parser.cpp" +#line 3395 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 378 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3405 "bison_parser.cpp" +#line 3401 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 380 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3411 "bison_parser.cpp" +#line 3407 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 381 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3417 "bison_parser.cpp" +#line 3413 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 382 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3423 "bison_parser.cpp" +#line 3419 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 383 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3429 "bison_parser.cpp" +#line 3425 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 384 "bison_parser.y" +#line 385 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3435 "bison_parser.cpp" +#line 3431 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 385 "bison_parser.y" +#line 386 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3441 "bison_parser.cpp" +#line 3437 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 386 "bison_parser.y" +#line 387 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3447 "bison_parser.cpp" +#line 3443 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 387 "bison_parser.y" +#line 388 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3453 "bison_parser.cpp" +#line 3449 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 388 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3459 "bison_parser.cpp" +#line 3455 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 389 "bison_parser.y" +#line 390 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3465 "bison_parser.cpp" +#line 3461 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 395 "bison_parser.y" +#line 396 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3471 "bison_parser.cpp" +#line 3467 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 396 "bison_parser.y" +#line 397 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3477 "bison_parser.cpp" +#line 3473 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 398 "bison_parser.y" +#line 399 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3486 "bison_parser.cpp" +#line 3482 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 402 "bison_parser.y" +#line 403 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3495 "bison_parser.cpp" +#line 3491 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 407 "bison_parser.y" +#line 408 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3504 "bison_parser.cpp" +#line 3500 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' extended_literal_list ')' */ -#line 411 "bison_parser.y" +#line 412 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3514 "bison_parser.cpp" +#line 3510 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 421 "bison_parser.y" +#line 422 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3520 "bison_parser.cpp" +#line 3516 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 422 "bison_parser.y" +#line 423 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3526 "bison_parser.cpp" +#line 3522 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 423 "bison_parser.y" +#line 424 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3532 "bison_parser.cpp" +#line 3528 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 431 "bison_parser.y" +#line 432 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3542 "bison_parser.cpp" +#line 3538 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 439 "bison_parser.y" +#line 440 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3551 "bison_parser.cpp" +#line 3547 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_extended_literal_list ')' */ -#line 443 "bison_parser.y" +#line 444 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3561 "bison_parser.cpp" +#line 3557 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 455 "bison_parser.y" +#line 456 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (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 3572 "bison_parser.cpp" +#line 3568 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_import_export_options opt_where */ -#line 461 "bison_parser.y" +#line 462 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_export_option_t)->format); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3583,25 +3579,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->encoding = (yyvsp[-1].import_export_option_t)->encoding; (yyvsp[-1].import_export_option_t)->encoding = nullptr; } - if ((yyvsp[-1].import_export_option_t)->delimiter) { - (yyval.import_stmt)->delimiter = (yyvsp[-1].import_export_option_t)->delimiter; - (yyvsp[-1].import_export_option_t)->delimiter = nullptr; - } - if ((yyvsp[-1].import_export_option_t)->null) { - (yyval.import_stmt)->null = (yyvsp[-1].import_export_option_t)->null; - (yyvsp[-1].import_export_option_t)->null = nullptr; - } - if ((yyvsp[-1].import_export_option_t)->quote) { - (yyval.import_stmt)->quote = (yyvsp[-1].import_export_option_t)->quote; - (yyvsp[-1].import_export_option_t)->quote = nullptr; + if ((yyvsp[-1].import_export_option_t)->csv_options) { + (yyval.import_stmt)->csv_options = (yyvsp[-1].import_export_option_t)->csv_options; + (yyvsp[-1].import_export_option_t)->csv_options = nullptr; } delete (yyvsp[-1].import_export_option_t); } -#line 3601 "bison_parser.cpp" +#line 3589 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 486 "bison_parser.y" +#line 479 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3616,58 +3604,63 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3620 "bison_parser.cpp" +#line 3608 "bison_parser.cpp" break; case 38: /* file_path: STRING */ -#line 501 "bison_parser.y" +#line 494 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 3626 "bison_parser.cpp" +#line 3614 "bison_parser.cpp" break; case 39: /* opt_import_export_options: WITH '(' import_export_options ')' */ -#line 503 "bison_parser.y" +#line 496 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3632 "bison_parser.cpp" +#line 3620 "bison_parser.cpp" break; case 40: /* opt_import_export_options: '(' import_export_options ')' */ -#line 504 "bison_parser.y" +#line 497 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3638 "bison_parser.cpp" +#line 3626 "bison_parser.cpp" break; case 41: /* opt_import_export_options: %empty */ -#line 505 "bison_parser.y" +#line 498 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; } -#line 3644 "bison_parser.cpp" +#line 3632 "bison_parser.cpp" break; case 42: /* import_export_options: import_export_options ',' FORMAT file_type */ -#line 507 "bison_parser.y" +#line 500 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->format != kImportAuto) { delete (yyvsp[-3].import_export_option_t); yyerror(&yyloc, result, scanner, "File type must only be provided once."); YYERROR; } + if ((yyvsp[-3].import_export_option_t)->csv_options && (yyvsp[0].import_type_t) != kImportCSV && (yyvsp[0].import_type_t) != kImportAuto) { + delete (yyvsp[-3].import_export_option_t); + yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + YYERROR; + } (yyvsp[-3].import_export_option_t)->format = (yyvsp[0].import_type_t); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3658 "bison_parser.cpp" +#line 3651 "bison_parser.cpp" break; case 43: /* import_export_options: FORMAT file_type */ -#line 516 "bison_parser.y" +#line 514 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->format = (yyvsp[0].import_type_t); } -#line 3667 "bison_parser.cpp" +#line 3660 "bison_parser.cpp" break; case 44: /* import_export_options: import_export_options ',' ENCODING STRING */ -#line 520 "bison_parser.y" +#line 518 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->encoding) { delete (yyvsp[-3].import_export_option_t); @@ -3678,92 +3671,111 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->encoding = (yyvsp[0].sval); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3682 "bison_parser.cpp" +#line 3675 "bison_parser.cpp" break; case 45: /* import_export_options: ENCODING STRING */ -#line 530 "bison_parser.y" +#line 528 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->encoding = (yyvsp[0].sval); } -#line 3691 "bison_parser.cpp" +#line 3684 "bison_parser.cpp" break; - case 46: /* import_export_options: import_export_options ',' DELIMITER STRING */ -#line 534 "bison_parser.y" - { - if ((yyvsp[-3].import_export_option_t)->delimiter) { - delete (yyvsp[-3].import_export_option_t); - free((yyvsp[0].sval)); - yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + case 46: /* import_export_options: import_export_options ',' csv_import_export_options */ +#line 532 "bison_parser.y" + { + if ((yyvsp[-2].import_export_option_t)->format != kImportAuto && (yyvsp[-2].import_export_option_t)->format != kImportCSV) { + delete (yyvsp[-2].import_export_option_t); + delete (yyvsp[0].csv_import_export_option_t); + yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); YYERROR; } - (yyvsp[-3].import_export_option_t)->delimiter = (yyvsp[0].sval); - (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); -} -#line 3706 "bison_parser.cpp" - break; - case 47: /* import_export_options: DELIMITER STRING */ -#line 544 "bison_parser.y" - { - (yyval.import_export_option_t) = new ImportExportOptions{}; - (yyval.import_export_option_t)->delimiter = (yyvsp[0].sval); -} -#line 3715 "bison_parser.cpp" - break; + if ((yyvsp[-2].import_export_option_t)->csv_options) { + if ((yyvsp[-2].import_export_option_t)->csv_options->delimiter && (yyvsp[0].csv_import_export_option_t)->delimiter) { + delete (yyvsp[-2].import_export_option_t); + delete (yyvsp[0].csv_import_export_option_t); + yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + YYERROR; + } + if ((yyvsp[-2].import_export_option_t)->csv_options->null && (yyvsp[0].csv_import_export_option_t)->null) { + delete (yyvsp[-2].import_export_option_t); + delete (yyvsp[0].csv_import_export_option_t); + yyerror(&yyloc, result, scanner, "Null string must only be provided once."); + YYERROR; + } + if ((yyvsp[-2].import_export_option_t)->csv_options->quote && (yyvsp[0].csv_import_export_option_t)->quote) { + delete (yyvsp[-2].import_export_option_t); + delete (yyvsp[0].csv_import_export_option_t); + yyerror(&yyloc, result, scanner, "Quote must only be provided once."); + YYERROR; + } - case 48: /* import_export_options: import_export_options ',' NULL STRING */ -#line 548 "bison_parser.y" - { - if ((yyvsp[-3].import_export_option_t)->null) { - delete (yyvsp[-3].import_export_option_t); - free((yyvsp[0].sval)); - yyerror(&yyloc, result, scanner, "Null string must only be provided once."); - YYERROR; + if ((yyvsp[0].csv_import_export_option_t)->delimiter) { + (yyvsp[-2].import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_import_export_option_t)->delimiter; + (yyvsp[0].csv_import_export_option_t)->delimiter = nullptr; + } + if ((yyvsp[0].csv_import_export_option_t)->null) { + (yyvsp[-2].import_export_option_t)->csv_options->null = (yyvsp[0].csv_import_export_option_t)->null; + (yyvsp[0].csv_import_export_option_t)->null = nullptr; + + } + if ((yyvsp[0].csv_import_export_option_t)->quote) { + (yyvsp[-2].import_export_option_t)->csv_options->quote = (yyvsp[0].csv_import_export_option_t)->quote; + (yyvsp[0].csv_import_export_option_t)->quote = nullptr; + } + delete (yyvsp[0].csv_import_export_option_t); + } else { + (yyvsp[-2].import_export_option_t)->csv_options = (yyvsp[0].csv_import_export_option_t); } - (yyvsp[-3].import_export_option_t)->null = (yyvsp[0].sval); - (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); + + (yyval.import_export_option_t) = (yyvsp[-2].import_export_option_t); } -#line 3730 "bison_parser.cpp" +#line 3737 "bison_parser.cpp" break; - case 49: /* import_export_options: NULL STRING */ -#line 558 "bison_parser.y" - { + case 47: /* import_export_options: csv_import_export_options */ +#line 580 "bison_parser.y" + { (yyval.import_export_option_t) = new ImportExportOptions{}; - (yyval.import_export_option_t)->null = (yyvsp[0].sval); + (yyval.import_export_option_t)->csv_options = (yyvsp[0].csv_import_export_option_t); } -#line 3739 "bison_parser.cpp" +#line 3746 "bison_parser.cpp" break; - case 50: /* import_export_options: import_export_options ',' QUOTE STRING */ -#line 562 "bison_parser.y" - { - if ((yyvsp[-3].import_export_option_t)->quote) { - delete (yyvsp[-3].import_export_option_t); + case 48: /* csv_import_export_options: IDENTIFIER STRING */ +#line 585 "bison_parser.y" + { + (yyval.csv_import_export_option_t) = new CsvImportExportOptions{}; + if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { + (yyval.csv_import_export_option_t)->delimiter = (yyvsp[0].sval); + } else if (strcasecmp((yyvsp[-1].sval), "QUOTE") == 0) { + (yyval.csv_import_export_option_t)->quote = (yyvsp[0].sval); + } else { + delete (yyval.csv_import_export_option_t); + free((yyvsp[-1].sval)); free((yyvsp[0].sval)); - yyerror(&yyloc, result, scanner, "Quote string must only be provided once."); + yyerror(&yyloc, result, scanner, "Unknown identifier when parsing CSV options."); YYERROR; } - (yyvsp[-3].import_export_option_t)->quote = (yyvsp[0].sval); - (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); + free((yyvsp[-1].sval)); } -#line 3754 "bison_parser.cpp" +#line 3766 "bison_parser.cpp" break; - case 51: /* import_export_options: QUOTE STRING */ -#line 572 "bison_parser.y" - { - (yyval.import_export_option_t) = new ImportExportOptions{}; - (yyval.import_export_option_t)->quote = (yyvsp[0].sval); + case 49: /* csv_import_export_options: NULL STRING */ +#line 600 "bison_parser.y" + { + (yyval.csv_import_export_option_t) = new CsvImportExportOptions{}; + (yyval.csv_import_export_option_t)->null = (yyvsp[0].sval); } -#line 3763 "bison_parser.cpp" +#line 3775 "bison_parser.cpp" break; - case 52: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 582 "bison_parser.y" + case 50: /* export_statement: COPY table_name TO file_path opt_import_export_options */ +#line 610 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3773,25 +3785,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.export_stmt)->encoding = (yyvsp[0].import_export_option_t)->encoding; (yyvsp[0].import_export_option_t)->encoding = nullptr; } - if ((yyvsp[0].import_export_option_t)->delimiter) { - (yyval.export_stmt)->delimiter = (yyvsp[0].import_export_option_t)->delimiter; - (yyvsp[0].import_export_option_t)->delimiter = nullptr; - } - if ((yyvsp[0].import_export_option_t)->null) { - (yyval.export_stmt)->null = (yyvsp[0].import_export_option_t)->null; - (yyvsp[0].import_export_option_t)->null = nullptr; - } - if ((yyvsp[0].import_export_option_t)->quote) { - (yyval.export_stmt)->quote = (yyvsp[0].import_export_option_t)->quote; - (yyvsp[0].import_export_option_t)->quote = nullptr; + if ((yyvsp[0].import_export_option_t)->csv_options) { + (yyval.export_stmt)->csv_options = (yyvsp[0].import_export_option_t)->csv_options; + (yyvsp[0].import_export_option_t)->csv_options = nullptr; } delete (yyvsp[0].import_export_option_t); } -#line 3791 "bison_parser.cpp" +#line 3795 "bison_parser.cpp" break; - case 53: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 605 "bison_parser.y" + case 51: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ +#line 625 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3800,51 +3804,43 @@ YYLTYPE yylloc = yyloc_default; (yyval.export_stmt)->encoding = (yyvsp[0].import_export_option_t)->encoding; (yyvsp[0].import_export_option_t)->encoding = nullptr; } - if ((yyvsp[0].import_export_option_t)->delimiter) { - (yyval.export_stmt)->delimiter = (yyvsp[0].import_export_option_t)->delimiter; - (yyvsp[0].import_export_option_t)->delimiter = nullptr; - } - if ((yyvsp[0].import_export_option_t)->null) { - (yyval.export_stmt)->null = (yyvsp[0].import_export_option_t)->null; - (yyvsp[0].import_export_option_t)->null = nullptr; - } - if ((yyvsp[0].import_export_option_t)->quote) { - (yyval.export_stmt)->quote = (yyvsp[0].import_export_option_t)->quote; - (yyvsp[0].import_export_option_t)->quote = nullptr; + if ((yyvsp[0].import_export_option_t)->csv_options) { + (yyval.export_stmt)->csv_options = (yyvsp[0].import_export_option_t)->csv_options; + (yyvsp[0].import_export_option_t)->csv_options = nullptr; } delete (yyvsp[0].import_export_option_t); } -#line 3818 "bison_parser.cpp" +#line 3814 "bison_parser.cpp" break; - case 54: /* show_statement: SHOW TABLES */ -#line 633 "bison_parser.y" + case 52: /* show_statement: SHOW TABLES */ +#line 645 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3824 "bison_parser.cpp" +#line 3820 "bison_parser.cpp" break; - case 55: /* show_statement: SHOW COLUMNS table_name */ -#line 634 "bison_parser.y" + case 53: /* show_statement: SHOW COLUMNS table_name */ +#line 646 "bison_parser.y" { (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 3834 "bison_parser.cpp" +#line 3830 "bison_parser.cpp" break; - case 56: /* show_statement: DESCRIBE table_name */ -#line 639 "bison_parser.y" + case 54: /* show_statement: DESCRIBE table_name */ +#line 651 "bison_parser.y" { (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 3844 "bison_parser.cpp" +#line 3840 "bison_parser.cpp" break; - case 57: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 650 "bison_parser.y" + case 55: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ +#line 662 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3858,11 +3854,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3862 "bison_parser.cpp" +#line 3858 "bison_parser.cpp" break; - case 58: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 663 "bison_parser.y" + case 56: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ +#line 675 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3875,11 +3871,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3879 "bison_parser.cpp" +#line 3875 "bison_parser.cpp" break; - case 59: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 675 "bison_parser.y" + case 57: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ +#line 687 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3887,11 +3883,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3891 "bison_parser.cpp" +#line 3887 "bison_parser.cpp" break; - case 60: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 682 "bison_parser.y" + case 58: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ +#line 694 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3899,11 +3895,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3903 "bison_parser.cpp" +#line 3899 "bison_parser.cpp" break; - case 61: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 689 "bison_parser.y" + case 59: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ +#line 701 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3912,53 +3908,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3916 "bison_parser.cpp" +#line 3912 "bison_parser.cpp" break; - case 62: /* opt_not_exists: IF NOT EXISTS */ -#line 698 "bison_parser.y" + case 60: /* opt_not_exists: IF NOT EXISTS */ +#line 710 "bison_parser.y" { (yyval.bval) = true; } -#line 3922 "bison_parser.cpp" +#line 3918 "bison_parser.cpp" break; - case 63: /* opt_not_exists: %empty */ -#line 699 "bison_parser.y" + case 61: /* opt_not_exists: %empty */ +#line 711 "bison_parser.y" { (yyval.bval) = false; } -#line 3928 "bison_parser.cpp" +#line 3924 "bison_parser.cpp" break; - case 64: /* table_elem_commalist: table_elem */ -#line 701 "bison_parser.y" + case 62: /* table_elem_commalist: table_elem */ +#line 713 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3937 "bison_parser.cpp" +#line 3933 "bison_parser.cpp" break; - case 65: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 705 "bison_parser.y" + case 63: /* table_elem_commalist: table_elem_commalist ',' table_elem */ +#line 717 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3946 "bison_parser.cpp" +#line 3942 "bison_parser.cpp" break; - case 66: /* table_elem: column_def */ -#line 710 "bison_parser.y" + case 64: /* table_elem: column_def */ +#line 722 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3952 "bison_parser.cpp" +#line 3948 "bison_parser.cpp" break; - case 67: /* table_elem: table_constraint */ -#line 711 "bison_parser.y" + case 65: /* table_elem: table_constraint */ +#line 723 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3958 "bison_parser.cpp" +#line 3954 "bison_parser.cpp" break; - case 68: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 713 "bison_parser.y" + case 66: /* column_def: IDENTIFIER column_type opt_column_constraints */ +#line 725 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3966,192 +3962,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3970 "bison_parser.cpp" +#line 3966 "bison_parser.cpp" break; - case 69: /* column_type: BIGINT */ -#line 721 "bison_parser.y" + case 67: /* column_type: BIGINT */ +#line 733 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3976 "bison_parser.cpp" +#line 3972 "bison_parser.cpp" break; - case 70: /* column_type: BOOLEAN */ -#line 722 "bison_parser.y" + case 68: /* column_type: BOOLEAN */ +#line 734 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3982 "bison_parser.cpp" +#line 3978 "bison_parser.cpp" break; - case 71: /* column_type: CHAR '(' INTVAL ')' */ -#line 723 "bison_parser.y" + case 69: /* column_type: CHAR '(' INTVAL ')' */ +#line 735 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3988 "bison_parser.cpp" +#line 3984 "bison_parser.cpp" break; - case 72: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 724 "bison_parser.y" + case 70: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ +#line 736 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3994 "bison_parser.cpp" +#line 3990 "bison_parser.cpp" break; - case 73: /* column_type: DATE */ -#line 725 "bison_parser.y" + case 71: /* column_type: DATE */ +#line 737 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 4000 "bison_parser.cpp" +#line 3996 "bison_parser.cpp" break; - case 74: /* column_type: DATETIME */ -#line 726 "bison_parser.y" + case 72: /* column_type: DATETIME */ +#line 738 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4006 "bison_parser.cpp" +#line 4002 "bison_parser.cpp" break; - case 75: /* column_type: DECIMAL opt_decimal_specification */ -#line 727 "bison_parser.y" + case 73: /* column_type: DECIMAL opt_decimal_specification */ +#line 739 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 4015 "bison_parser.cpp" +#line 4011 "bison_parser.cpp" break; - case 76: /* column_type: DOUBLE */ -#line 731 "bison_parser.y" + case 74: /* column_type: DOUBLE */ +#line 743 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 4021 "bison_parser.cpp" +#line 4017 "bison_parser.cpp" break; - case 77: /* column_type: FLOAT */ -#line 732 "bison_parser.y" + case 75: /* column_type: FLOAT */ +#line 744 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 4027 "bison_parser.cpp" +#line 4023 "bison_parser.cpp" break; - case 78: /* column_type: INT */ -#line 733 "bison_parser.y" + case 76: /* column_type: INT */ +#line 745 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4033 "bison_parser.cpp" +#line 4029 "bison_parser.cpp" break; - case 79: /* column_type: INTEGER */ -#line 734 "bison_parser.y" + case 77: /* column_type: INTEGER */ +#line 746 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4039 "bison_parser.cpp" +#line 4035 "bison_parser.cpp" break; - case 80: /* column_type: LONG */ -#line 735 "bison_parser.y" + case 78: /* column_type: LONG */ +#line 747 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 4045 "bison_parser.cpp" +#line 4041 "bison_parser.cpp" break; - case 81: /* column_type: REAL */ -#line 736 "bison_parser.y" + case 79: /* column_type: REAL */ +#line 748 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 4051 "bison_parser.cpp" +#line 4047 "bison_parser.cpp" break; - case 82: /* column_type: SMALLINT */ -#line 737 "bison_parser.y" + case 80: /* column_type: SMALLINT */ +#line 749 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 4057 "bison_parser.cpp" +#line 4053 "bison_parser.cpp" break; - case 83: /* column_type: TEXT */ -#line 738 "bison_parser.y" + case 81: /* column_type: TEXT */ +#line 750 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 4063 "bison_parser.cpp" +#line 4059 "bison_parser.cpp" break; - case 84: /* column_type: TIME opt_time_precision */ -#line 739 "bison_parser.y" + case 82: /* column_type: TIME opt_time_precision */ +#line 751 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 4069 "bison_parser.cpp" +#line 4065 "bison_parser.cpp" break; - case 85: /* column_type: TIMESTAMP */ -#line 740 "bison_parser.y" + case 83: /* column_type: TIMESTAMP */ +#line 752 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4075 "bison_parser.cpp" +#line 4071 "bison_parser.cpp" break; - case 86: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 741 "bison_parser.y" + case 84: /* column_type: VARCHAR '(' INTVAL ')' */ +#line 753 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4081 "bison_parser.cpp" +#line 4077 "bison_parser.cpp" break; - case 87: /* opt_time_precision: '(' INTVAL ')' */ -#line 743 "bison_parser.y" + case 85: /* opt_time_precision: '(' INTVAL ')' */ +#line 755 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 4087 "bison_parser.cpp" +#line 4083 "bison_parser.cpp" break; - case 88: /* opt_time_precision: %empty */ -#line 744 "bison_parser.y" + case 86: /* opt_time_precision: %empty */ +#line 756 "bison_parser.y" { (yyval.ival) = 0; } -#line 4093 "bison_parser.cpp" +#line 4089 "bison_parser.cpp" break; - case 89: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 746 "bison_parser.y" + case 87: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ +#line 758 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 4099 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; - case 90: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 747 "bison_parser.y" + case 88: /* opt_decimal_specification: '(' INTVAL ')' */ +#line 759 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 4105 "bison_parser.cpp" +#line 4101 "bison_parser.cpp" break; - case 91: /* opt_decimal_specification: %empty */ -#line 748 "bison_parser.y" + case 89: /* opt_decimal_specification: %empty */ +#line 760 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 4111 "bison_parser.cpp" +#line 4107 "bison_parser.cpp" break; - case 92: /* opt_column_constraints: column_constraints */ -#line 750 "bison_parser.y" + case 90: /* opt_column_constraints: column_constraints */ +#line 762 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4117 "bison_parser.cpp" +#line 4113 "bison_parser.cpp" break; - case 93: /* opt_column_constraints: %empty */ -#line 751 "bison_parser.y" + case 91: /* opt_column_constraints: %empty */ +#line 763 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4123 "bison_parser.cpp" +#line 4119 "bison_parser.cpp" break; - case 94: /* column_constraints: column_constraint */ -#line 753 "bison_parser.y" + case 92: /* column_constraints: column_constraint */ +#line 765 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4132 "bison_parser.cpp" +#line 4128 "bison_parser.cpp" break; - case 95: /* column_constraints: column_constraints column_constraint */ -#line 757 "bison_parser.y" + case 93: /* column_constraints: column_constraints column_constraint */ +#line 769 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4141 "bison_parser.cpp" +#line 4137 "bison_parser.cpp" break; - case 96: /* column_constraints: references_spec */ -#line 761 "bison_parser.y" + case 94: /* column_constraints: references_spec */ +#line 773 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4151 "bison_parser.cpp" +#line 4147 "bison_parser.cpp" break; - case 97: /* column_constraints: column_constraints references_spec */ -#line 766 "bison_parser.y" + case 95: /* column_constraints: column_constraints references_spec */ +#line 778 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4159,159 +4155,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4163 "bison_parser.cpp" +#line 4159 "bison_parser.cpp" break; - case 98: /* column_constraint: PRIMARY KEY */ -#line 774 "bison_parser.y" + case 96: /* column_constraint: PRIMARY KEY */ +#line 786 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4169 "bison_parser.cpp" +#line 4165 "bison_parser.cpp" break; - case 99: /* column_constraint: UNIQUE */ -#line 775 "bison_parser.y" + case 97: /* column_constraint: UNIQUE */ +#line 787 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4175 "bison_parser.cpp" +#line 4171 "bison_parser.cpp" break; - case 100: /* column_constraint: NULL */ -#line 776 "bison_parser.y" + case 98: /* column_constraint: NULL */ +#line 788 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4181 "bison_parser.cpp" +#line 4177 "bison_parser.cpp" break; - case 101: /* column_constraint: NOT NULL */ -#line 777 "bison_parser.y" + case 99: /* column_constraint: NOT NULL */ +#line 789 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4187 "bison_parser.cpp" +#line 4183 "bison_parser.cpp" break; - case 102: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 779 "bison_parser.y" + case 100: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ +#line 791 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4193 "bison_parser.cpp" +#line 4189 "bison_parser.cpp" break; - case 103: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 780 "bison_parser.y" + case 101: /* table_constraint: UNIQUE '(' ident_commalist ')' */ +#line 792 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4199 "bison_parser.cpp" +#line 4195 "bison_parser.cpp" break; - case 104: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 781 "bison_parser.y" + case 102: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ +#line 793 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4205 "bison_parser.cpp" +#line 4201 "bison_parser.cpp" break; - case 105: /* references_spec: REFERENCES table_name opt_column_list */ -#line 783 "bison_parser.y" + case 103: /* references_spec: REFERENCES table_name opt_column_list */ +#line 795 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4211 "bison_parser.cpp" +#line 4207 "bison_parser.cpp" break; - case 106: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 791 "bison_parser.y" + case 104: /* drop_statement: DROP TABLE opt_exists table_name */ +#line 803 "bison_parser.y" { (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 4222 "bison_parser.cpp" +#line 4218 "bison_parser.cpp" break; - case 107: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 797 "bison_parser.y" + case 105: /* drop_statement: DROP VIEW opt_exists table_name */ +#line 809 "bison_parser.y" { (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 4233 "bison_parser.cpp" +#line 4229 "bison_parser.cpp" break; - case 108: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 803 "bison_parser.y" + case 106: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ +#line 815 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4243 "bison_parser.cpp" +#line 4239 "bison_parser.cpp" break; - case 109: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 809 "bison_parser.y" + case 107: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ +#line 821 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4253 "bison_parser.cpp" +#line 4249 "bison_parser.cpp" break; - case 110: /* opt_exists: IF EXISTS */ -#line 815 "bison_parser.y" + case 108: /* opt_exists: IF EXISTS */ +#line 827 "bison_parser.y" { (yyval.bval) = true; } -#line 4259 "bison_parser.cpp" +#line 4255 "bison_parser.cpp" break; - case 111: /* opt_exists: %empty */ -#line 816 "bison_parser.y" + case 109: /* opt_exists: %empty */ +#line 828 "bison_parser.y" { (yyval.bval) = false; } -#line 4265 "bison_parser.cpp" +#line 4261 "bison_parser.cpp" break; - case 112: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 823 "bison_parser.y" + case 110: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ +#line 835 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4275 "bison_parser.cpp" +#line 4271 "bison_parser.cpp" break; - case 113: /* alter_action: drop_action */ -#line 829 "bison_parser.y" + case 111: /* alter_action: drop_action */ +#line 841 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4281 "bison_parser.cpp" +#line 4277 "bison_parser.cpp" break; - case 114: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 831 "bison_parser.y" + case 112: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ +#line 843 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4290 "bison_parser.cpp" +#line 4286 "bison_parser.cpp" break; - case 115: /* delete_statement: DELETE FROM table_name opt_where */ -#line 841 "bison_parser.y" + case 113: /* delete_statement: DELETE FROM table_name opt_where */ +#line 853 "bison_parser.y" { (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 4301 "bison_parser.cpp" +#line 4297 "bison_parser.cpp" break; - case 116: /* truncate_statement: TRUNCATE table_name */ -#line 848 "bison_parser.y" + case 114: /* truncate_statement: TRUNCATE table_name */ +#line 860 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4311 "bison_parser.cpp" +#line 4307 "bison_parser.cpp" break; - case 117: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 859 "bison_parser.y" + case 115: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ +#line 871 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4319,11 +4315,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4323 "bison_parser.cpp" +#line 4319 "bison_parser.cpp" break; - case 118: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 866 "bison_parser.y" + case 116: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ +#line 878 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4331,80 +4327,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4335 "bison_parser.cpp" +#line 4331 "bison_parser.cpp" break; - case 119: /* opt_column_list: '(' ident_commalist ')' */ -#line 874 "bison_parser.y" + case 117: /* opt_column_list: '(' ident_commalist ')' */ +#line 886 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4341 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; - case 120: /* opt_column_list: %empty */ -#line 875 "bison_parser.y" + case 118: /* opt_column_list: %empty */ +#line 887 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4347 "bison_parser.cpp" +#line 4343 "bison_parser.cpp" break; - case 121: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 882 "bison_parser.y" + case 119: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ +#line 894 "bison_parser.y" { (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 4358 "bison_parser.cpp" +#line 4354 "bison_parser.cpp" break; - case 122: /* update_clause_commalist: update_clause */ -#line 889 "bison_parser.y" + case 120: /* update_clause_commalist: update_clause */ +#line 901 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4367 "bison_parser.cpp" +#line 4363 "bison_parser.cpp" break; - case 123: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 893 "bison_parser.y" + case 121: /* update_clause_commalist: update_clause_commalist ',' update_clause */ +#line 905 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4376 "bison_parser.cpp" +#line 4372 "bison_parser.cpp" break; - case 124: /* update_clause: IDENTIFIER '=' expr */ -#line 898 "bison_parser.y" + case 122: /* update_clause: IDENTIFIER '=' expr */ +#line 910 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4386 "bison_parser.cpp" +#line 4382 "bison_parser.cpp" break; - case 125: /* select_statement: opt_with_clause select_with_paren */ -#line 908 "bison_parser.y" + case 123: /* select_statement: opt_with_clause select_with_paren */ +#line 920 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4395 "bison_parser.cpp" +#line 4391 "bison_parser.cpp" break; - case 126: /* select_statement: opt_with_clause select_no_paren */ -#line 912 "bison_parser.y" + case 124: /* select_statement: opt_with_clause select_no_paren */ +#line 924 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4404 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; - case 127: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 916 "bison_parser.y" + case 125: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ +#line 928 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4416,17 +4412,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4420 "bison_parser.cpp" +#line 4416 "bison_parser.cpp" break; - case 130: /* select_within_set_operation_no_parentheses: select_clause */ -#line 930 "bison_parser.y" + case 128: /* select_within_set_operation_no_parentheses: select_clause */ +#line 942 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4426 "bison_parser.cpp" +#line 4422 "bison_parser.cpp" break; - case 131: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 931 "bison_parser.y" + case 129: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ +#line 943 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4435,23 +4431,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4439 "bison_parser.cpp" +#line 4435 "bison_parser.cpp" break; - case 132: /* select_with_paren: '(' select_no_paren ')' */ -#line 940 "bison_parser.y" + case 130: /* select_with_paren: '(' select_no_paren ')' */ +#line 952 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4445 "bison_parser.cpp" +#line 4441 "bison_parser.cpp" break; - case 133: /* select_with_paren: '(' select_with_paren ')' */ -#line 941 "bison_parser.y" + case 131: /* select_with_paren: '(' select_with_paren ')' */ +#line 953 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4451 "bison_parser.cpp" +#line 4447 "bison_parser.cpp" break; - case 134: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 943 "bison_parser.y" + case 132: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ +#line 955 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4466,11 +4462,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4470 "bison_parser.cpp" +#line 4466 "bison_parser.cpp" break; - case 135: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 957 "bison_parser.y" + case 133: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ +#line 969 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4482,59 +4478,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4486 "bison_parser.cpp" +#line 4482 "bison_parser.cpp" break; - case 136: /* set_operator: set_type opt_all */ -#line 969 "bison_parser.y" + case 134: /* set_operator: set_type opt_all */ +#line 981 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4495 "bison_parser.cpp" +#line 4491 "bison_parser.cpp" break; - case 137: /* set_type: UNION */ -#line 974 "bison_parser.y" + case 135: /* set_type: UNION */ +#line 986 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4504 "bison_parser.cpp" +#line 4500 "bison_parser.cpp" break; - case 138: /* set_type: INTERSECT */ -#line 978 "bison_parser.y" + case 136: /* set_type: INTERSECT */ +#line 990 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4513 "bison_parser.cpp" +#line 4509 "bison_parser.cpp" break; - case 139: /* set_type: EXCEPT */ -#line 982 "bison_parser.y" + case 137: /* set_type: EXCEPT */ +#line 994 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4522 "bison_parser.cpp" +#line 4518 "bison_parser.cpp" break; - case 140: /* opt_all: ALL */ -#line 987 "bison_parser.y" + case 138: /* opt_all: ALL */ +#line 999 "bison_parser.y" { (yyval.bval) = true; } -#line 4528 "bison_parser.cpp" +#line 4524 "bison_parser.cpp" break; - case 141: /* opt_all: %empty */ -#line 988 "bison_parser.y" + case 139: /* opt_all: %empty */ +#line 1000 "bison_parser.y" { (yyval.bval) = false; } -#line 4534 "bison_parser.cpp" +#line 4530 "bison_parser.cpp" break; - case 142: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 990 "bison_parser.y" + case 140: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ +#line 1002 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4544,239 +4540,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4548 "bison_parser.cpp" +#line 4544 "bison_parser.cpp" break; - case 143: /* opt_distinct: DISTINCT */ -#line 1000 "bison_parser.y" + case 141: /* opt_distinct: DISTINCT */ +#line 1012 "bison_parser.y" { (yyval.bval) = true; } -#line 4554 "bison_parser.cpp" +#line 4550 "bison_parser.cpp" break; - case 144: /* opt_distinct: %empty */ -#line 1001 "bison_parser.y" + case 142: /* opt_distinct: %empty */ +#line 1013 "bison_parser.y" { (yyval.bval) = false; } -#line 4560 "bison_parser.cpp" +#line 4556 "bison_parser.cpp" break; - case 146: /* opt_from_clause: from_clause */ -#line 1005 "bison_parser.y" + case 144: /* opt_from_clause: from_clause */ +#line 1017 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4566 "bison_parser.cpp" +#line 4562 "bison_parser.cpp" break; - case 147: /* opt_from_clause: %empty */ -#line 1006 "bison_parser.y" + case 145: /* opt_from_clause: %empty */ +#line 1018 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4572 "bison_parser.cpp" +#line 4568 "bison_parser.cpp" break; - case 148: /* from_clause: FROM table_ref */ -#line 1008 "bison_parser.y" + case 146: /* from_clause: FROM table_ref */ +#line 1020 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4578 "bison_parser.cpp" +#line 4574 "bison_parser.cpp" break; - case 149: /* opt_where: WHERE expr */ -#line 1010 "bison_parser.y" + case 147: /* opt_where: WHERE expr */ +#line 1022 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4584 "bison_parser.cpp" +#line 4580 "bison_parser.cpp" break; - case 150: /* opt_where: %empty */ -#line 1011 "bison_parser.y" + case 148: /* opt_where: %empty */ +#line 1023 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4590 "bison_parser.cpp" +#line 4586 "bison_parser.cpp" break; - case 151: /* opt_group: GROUP BY expr_list opt_having */ -#line 1013 "bison_parser.y" + case 149: /* opt_group: GROUP BY expr_list opt_having */ +#line 1025 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4600 "bison_parser.cpp" +#line 4596 "bison_parser.cpp" break; - case 152: /* opt_group: %empty */ -#line 1018 "bison_parser.y" + case 150: /* opt_group: %empty */ +#line 1030 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4606 "bison_parser.cpp" +#line 4602 "bison_parser.cpp" break; - case 153: /* opt_having: HAVING expr */ -#line 1020 "bison_parser.y" + case 151: /* opt_having: HAVING expr */ +#line 1032 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4612 "bison_parser.cpp" +#line 4608 "bison_parser.cpp" break; - case 154: /* opt_having: %empty */ -#line 1021 "bison_parser.y" + case 152: /* opt_having: %empty */ +#line 1033 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4618 "bison_parser.cpp" +#line 4614 "bison_parser.cpp" break; - case 155: /* opt_order: ORDER BY order_list */ -#line 1023 "bison_parser.y" + case 153: /* opt_order: ORDER BY order_list */ +#line 1035 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4624 "bison_parser.cpp" +#line 4620 "bison_parser.cpp" break; - case 156: /* opt_order: %empty */ -#line 1024 "bison_parser.y" + case 154: /* opt_order: %empty */ +#line 1036 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4630 "bison_parser.cpp" +#line 4626 "bison_parser.cpp" break; - case 157: /* order_list: order_desc */ -#line 1026 "bison_parser.y" + case 155: /* order_list: order_desc */ +#line 1038 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4639 "bison_parser.cpp" +#line 4635 "bison_parser.cpp" break; - case 158: /* order_list: order_list ',' order_desc */ -#line 1030 "bison_parser.y" + case 156: /* order_list: order_list ',' order_desc */ +#line 1042 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4648 "bison_parser.cpp" +#line 4644 "bison_parser.cpp" break; - case 159: /* order_desc: expr opt_order_type */ -#line 1035 "bison_parser.y" + case 157: /* order_desc: expr opt_order_type */ +#line 1047 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4654 "bison_parser.cpp" +#line 4650 "bison_parser.cpp" break; - case 160: /* opt_order_type: ASC */ -#line 1037 "bison_parser.y" + case 158: /* opt_order_type: ASC */ +#line 1049 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4660 "bison_parser.cpp" +#line 4656 "bison_parser.cpp" break; - case 161: /* opt_order_type: DESC */ -#line 1038 "bison_parser.y" + case 159: /* opt_order_type: DESC */ +#line 1050 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4666 "bison_parser.cpp" +#line 4662 "bison_parser.cpp" break; - case 162: /* opt_order_type: %empty */ -#line 1039 "bison_parser.y" + case 160: /* opt_order_type: %empty */ +#line 1051 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4672 "bison_parser.cpp" +#line 4668 "bison_parser.cpp" break; - case 163: /* opt_top: TOP int_literal */ -#line 1043 "bison_parser.y" + case 161: /* opt_top: TOP int_literal */ +#line 1055 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4678 "bison_parser.cpp" +#line 4674 "bison_parser.cpp" break; - case 164: /* opt_top: %empty */ -#line 1044 "bison_parser.y" + case 162: /* opt_top: %empty */ +#line 1056 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4684 "bison_parser.cpp" +#line 4680 "bison_parser.cpp" break; - case 165: /* opt_limit: LIMIT expr */ -#line 1046 "bison_parser.y" + case 163: /* opt_limit: LIMIT expr */ +#line 1058 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4690 "bison_parser.cpp" +#line 4686 "bison_parser.cpp" break; - case 166: /* opt_limit: OFFSET expr */ -#line 1047 "bison_parser.y" + case 164: /* opt_limit: OFFSET expr */ +#line 1059 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4696 "bison_parser.cpp" +#line 4692 "bison_parser.cpp" break; - case 167: /* opt_limit: LIMIT expr OFFSET expr */ -#line 1048 "bison_parser.y" + case 165: /* opt_limit: LIMIT expr OFFSET expr */ +#line 1060 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4702 "bison_parser.cpp" +#line 4698 "bison_parser.cpp" break; - case 168: /* opt_limit: LIMIT ALL */ -#line 1049 "bison_parser.y" + case 166: /* opt_limit: LIMIT ALL */ +#line 1061 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4708 "bison_parser.cpp" +#line 4704 "bison_parser.cpp" break; - case 169: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 1050 "bison_parser.y" + case 167: /* opt_limit: LIMIT ALL OFFSET expr */ +#line 1062 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4714 "bison_parser.cpp" +#line 4710 "bison_parser.cpp" break; - case 170: /* opt_limit: %empty */ -#line 1051 "bison_parser.y" + case 168: /* opt_limit: %empty */ +#line 1063 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4720 "bison_parser.cpp" +#line 4716 "bison_parser.cpp" break; - case 171: /* expr_list: expr_alias */ -#line 1056 "bison_parser.y" + case 169: /* expr_list: expr_alias */ +#line 1068 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4729 "bison_parser.cpp" +#line 4725 "bison_parser.cpp" break; - case 172: /* expr_list: expr_list ',' expr_alias */ -#line 1060 "bison_parser.y" + case 170: /* expr_list: expr_list ',' expr_alias */ +#line 1072 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4738 "bison_parser.cpp" +#line 4734 "bison_parser.cpp" break; - case 173: /* opt_extended_literal_list: extended_literal_list */ -#line 1066 "bison_parser.y" + case 171: /* opt_extended_literal_list: extended_literal_list */ +#line 1078 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4744 "bison_parser.cpp" +#line 4740 "bison_parser.cpp" break; - case 174: /* opt_extended_literal_list: %empty */ -#line 1067 "bison_parser.y" + case 172: /* opt_extended_literal_list: %empty */ +#line 1079 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4750 "bison_parser.cpp" +#line 4746 "bison_parser.cpp" break; - case 175: /* extended_literal_list: casted_extended_literal */ -#line 1069 "bison_parser.y" + case 173: /* extended_literal_list: casted_extended_literal */ +#line 1081 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4759 "bison_parser.cpp" +#line 4755 "bison_parser.cpp" break; - case 176: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 1073 "bison_parser.y" + case 174: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ +#line 1085 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4768 "bison_parser.cpp" +#line 4764 "bison_parser.cpp" break; - case 178: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 1078 "bison_parser.y" + case 176: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ +#line 1090 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4776 "bison_parser.cpp" +#line 4772 "bison_parser.cpp" break; - case 179: /* extended_literal: literal */ -#line 1082 "bison_parser.y" + case 177: /* extended_literal: literal */ +#line 1094 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4785,23 +4781,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4789 "bison_parser.cpp" +#line 4785 "bison_parser.cpp" break; - case 180: /* extended_literal: '-' num_literal */ -#line 1090 "bison_parser.y" + case 178: /* extended_literal: '-' num_literal */ +#line 1102 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4795 "bison_parser.cpp" +#line 4791 "bison_parser.cpp" break; - case 181: /* extended_literal: '-' interval_literal */ -#line 1091 "bison_parser.y" + case 179: /* extended_literal: '-' interval_literal */ +#line 1103 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4801 "bison_parser.cpp" +#line 4797 "bison_parser.cpp" break; - case 182: /* expr_alias: expr opt_alias */ -#line 1093 "bison_parser.y" + case 180: /* expr_alias: expr opt_alias */ +#line 1105 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4810,507 +4806,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4814 "bison_parser.cpp" +#line 4810 "bison_parser.cpp" break; - case 188: /* operand: '(' expr ')' */ -#line 1104 "bison_parser.y" + case 186: /* operand: '(' expr ')' */ +#line 1116 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4820 "bison_parser.cpp" +#line 4816 "bison_parser.cpp" break; - case 198: /* operand: '(' select_no_paren ')' */ -#line 1106 "bison_parser.y" + case 196: /* operand: '(' select_no_paren ')' */ +#line 1118 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4828 "bison_parser.cpp" +#line 4824 "bison_parser.cpp" break; - case 201: /* unary_expr: '-' operand */ -#line 1112 "bison_parser.y" + case 199: /* unary_expr: '-' operand */ +#line 1124 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4834 "bison_parser.cpp" +#line 4830 "bison_parser.cpp" break; - case 202: /* unary_expr: NOT operand */ -#line 1113 "bison_parser.y" + case 200: /* unary_expr: NOT operand */ +#line 1125 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4840 "bison_parser.cpp" +#line 4836 "bison_parser.cpp" break; - case 203: /* unary_expr: operand ISNULL */ -#line 1114 "bison_parser.y" + case 201: /* unary_expr: operand ISNULL */ +#line 1126 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4846 "bison_parser.cpp" +#line 4842 "bison_parser.cpp" break; - case 204: /* unary_expr: operand IS NULL */ -#line 1115 "bison_parser.y" + case 202: /* unary_expr: operand IS NULL */ +#line 1127 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4852 "bison_parser.cpp" +#line 4848 "bison_parser.cpp" break; - case 205: /* unary_expr: operand IS NOT NULL */ -#line 1116 "bison_parser.y" + case 203: /* unary_expr: operand IS NOT NULL */ +#line 1128 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4858 "bison_parser.cpp" +#line 4854 "bison_parser.cpp" break; - case 207: /* binary_expr: operand '-' operand */ -#line 1118 "bison_parser.y" + case 205: /* binary_expr: operand '-' operand */ +#line 1130 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4864 "bison_parser.cpp" +#line 4860 "bison_parser.cpp" break; - case 208: /* binary_expr: operand '+' operand */ -#line 1119 "bison_parser.y" + case 206: /* binary_expr: operand '+' operand */ +#line 1131 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4870 "bison_parser.cpp" +#line 4866 "bison_parser.cpp" break; - case 209: /* binary_expr: operand '/' operand */ -#line 1120 "bison_parser.y" + case 207: /* binary_expr: operand '/' operand */ +#line 1132 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4876 "bison_parser.cpp" +#line 4872 "bison_parser.cpp" break; - case 210: /* binary_expr: operand '*' operand */ -#line 1121 "bison_parser.y" + case 208: /* binary_expr: operand '*' operand */ +#line 1133 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4882 "bison_parser.cpp" +#line 4878 "bison_parser.cpp" break; - case 211: /* binary_expr: operand '%' operand */ -#line 1122 "bison_parser.y" + case 209: /* binary_expr: operand '%' operand */ +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4888 "bison_parser.cpp" +#line 4884 "bison_parser.cpp" break; - case 212: /* binary_expr: operand '^' operand */ -#line 1123 "bison_parser.y" + case 210: /* binary_expr: operand '^' operand */ +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4894 "bison_parser.cpp" +#line 4890 "bison_parser.cpp" break; - case 213: /* binary_expr: operand LIKE operand */ -#line 1124 "bison_parser.y" + case 211: /* binary_expr: operand LIKE operand */ +#line 1136 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4900 "bison_parser.cpp" +#line 4896 "bison_parser.cpp" break; - case 214: /* binary_expr: operand NOT LIKE operand */ -#line 1125 "bison_parser.y" + case 212: /* binary_expr: operand NOT LIKE operand */ +#line 1137 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4906 "bison_parser.cpp" +#line 4902 "bison_parser.cpp" break; - case 215: /* binary_expr: operand ILIKE operand */ -#line 1126 "bison_parser.y" + case 213: /* binary_expr: operand ILIKE operand */ +#line 1138 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4912 "bison_parser.cpp" +#line 4908 "bison_parser.cpp" break; - case 216: /* binary_expr: operand CONCAT operand */ -#line 1127 "bison_parser.y" + case 214: /* binary_expr: operand CONCAT operand */ +#line 1139 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4918 "bison_parser.cpp" +#line 4914 "bison_parser.cpp" break; - case 217: /* logic_expr: expr AND expr */ -#line 1129 "bison_parser.y" + case 215: /* logic_expr: expr AND expr */ +#line 1141 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4924 "bison_parser.cpp" +#line 4920 "bison_parser.cpp" break; - case 218: /* logic_expr: expr OR expr */ -#line 1130 "bison_parser.y" + case 216: /* logic_expr: expr OR expr */ +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4930 "bison_parser.cpp" +#line 4926 "bison_parser.cpp" break; - case 219: /* in_expr: operand IN '(' expr_list ')' */ -#line 1132 "bison_parser.y" + case 217: /* in_expr: operand IN '(' expr_list ')' */ +#line 1144 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4936 "bison_parser.cpp" +#line 4932 "bison_parser.cpp" break; - case 220: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1133 "bison_parser.y" + case 218: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 1145 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4942 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; - case 221: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1134 "bison_parser.y" + case 219: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 1146 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4948 "bison_parser.cpp" +#line 4944 "bison_parser.cpp" break; - case 222: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1135 "bison_parser.y" + case 220: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4954 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; - case 223: /* case_expr: CASE expr case_list END */ -#line 1139 "bison_parser.y" + case 221: /* case_expr: CASE expr case_list END */ +#line 1151 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4960 "bison_parser.cpp" +#line 4956 "bison_parser.cpp" break; - case 224: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1140 "bison_parser.y" + case 222: /* case_expr: CASE expr case_list ELSE expr END */ +#line 1152 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4966 "bison_parser.cpp" +#line 4962 "bison_parser.cpp" break; - case 225: /* case_expr: CASE case_list END */ -#line 1141 "bison_parser.y" + case 223: /* case_expr: CASE case_list END */ +#line 1153 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4972 "bison_parser.cpp" +#line 4968 "bison_parser.cpp" break; - case 226: /* case_expr: CASE case_list ELSE expr END */ -#line 1142 "bison_parser.y" + case 224: /* case_expr: CASE case_list ELSE expr END */ +#line 1154 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4978 "bison_parser.cpp" +#line 4974 "bison_parser.cpp" break; - case 227: /* case_list: WHEN expr THEN expr */ -#line 1144 "bison_parser.y" + case 225: /* case_list: WHEN expr THEN expr */ +#line 1156 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4984 "bison_parser.cpp" +#line 4980 "bison_parser.cpp" break; - case 228: /* case_list: case_list WHEN expr THEN expr */ -#line 1145 "bison_parser.y" + case 226: /* case_list: case_list WHEN expr THEN expr */ +#line 1157 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4990 "bison_parser.cpp" +#line 4986 "bison_parser.cpp" break; - case 229: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1147 "bison_parser.y" + case 227: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1159 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4996 "bison_parser.cpp" +#line 4992 "bison_parser.cpp" break; - case 230: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1148 "bison_parser.y" + case 228: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1160 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 5002 "bison_parser.cpp" +#line 4998 "bison_parser.cpp" break; - case 231: /* comp_expr: operand '=' operand */ -#line 1150 "bison_parser.y" + case 229: /* comp_expr: operand '=' operand */ +#line 1162 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5008 "bison_parser.cpp" +#line 5004 "bison_parser.cpp" break; - case 232: /* comp_expr: operand EQUALS operand */ -#line 1151 "bison_parser.y" + case 230: /* comp_expr: operand EQUALS operand */ +#line 1163 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5014 "bison_parser.cpp" +#line 5010 "bison_parser.cpp" break; - case 233: /* comp_expr: operand NOTEQUALS operand */ -#line 1152 "bison_parser.y" + case 231: /* comp_expr: operand NOTEQUALS operand */ +#line 1164 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 5020 "bison_parser.cpp" +#line 5016 "bison_parser.cpp" break; - case 234: /* comp_expr: operand '<' operand */ -#line 1153 "bison_parser.y" + case 232: /* comp_expr: operand '<' operand */ +#line 1165 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 5026 "bison_parser.cpp" +#line 5022 "bison_parser.cpp" break; - case 235: /* comp_expr: operand '>' operand */ -#line 1154 "bison_parser.y" + case 233: /* comp_expr: operand '>' operand */ +#line 1166 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 5032 "bison_parser.cpp" +#line 5028 "bison_parser.cpp" break; - case 236: /* comp_expr: operand LESSEQ operand */ -#line 1155 "bison_parser.y" + case 234: /* comp_expr: operand LESSEQ operand */ +#line 1167 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 5038 "bison_parser.cpp" +#line 5034 "bison_parser.cpp" break; - case 237: /* comp_expr: operand GREATEREQ operand */ -#line 1156 "bison_parser.y" + case 235: /* comp_expr: operand GREATEREQ operand */ +#line 1168 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 5044 "bison_parser.cpp" +#line 5040 "bison_parser.cpp" break; - case 238: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1160 "bison_parser.y" + case 236: /* function_expr: IDENTIFIER '(' ')' opt_window */ +#line 1172 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 5050 "bison_parser.cpp" +#line 5046 "bison_parser.cpp" break; - case 239: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1161 "bison_parser.y" + case 237: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ +#line 1173 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 5056 "bison_parser.cpp" +#line 5052 "bison_parser.cpp" break; - case 240: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1165 "bison_parser.y" + case 238: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ +#line 1177 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 5062 "bison_parser.cpp" +#line 5058 "bison_parser.cpp" break; - case 241: /* opt_window: %empty */ -#line 1166 "bison_parser.y" + case 239: /* opt_window: %empty */ +#line 1178 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 5068 "bison_parser.cpp" +#line 5064 "bison_parser.cpp" break; - case 242: /* opt_partition: PARTITION BY expr_list */ -#line 1168 "bison_parser.y" + case 240: /* opt_partition: PARTITION BY expr_list */ +#line 1180 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 5074 "bison_parser.cpp" +#line 5070 "bison_parser.cpp" break; - case 243: /* opt_partition: %empty */ -#line 1169 "bison_parser.y" + case 241: /* opt_partition: %empty */ +#line 1181 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 5080 "bison_parser.cpp" +#line 5076 "bison_parser.cpp" break; - case 244: /* opt_frame_clause: frame_type frame_bound */ -#line 1174 "bison_parser.y" + case 242: /* opt_frame_clause: frame_type frame_bound */ +#line 1186 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 5086 "bison_parser.cpp" +#line 5082 "bison_parser.cpp" break; - case 245: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1175 "bison_parser.y" + case 243: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ +#line 1187 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 5092 "bison_parser.cpp" +#line 5088 "bison_parser.cpp" break; - case 246: /* opt_frame_clause: %empty */ -#line 1176 "bison_parser.y" + case 244: /* opt_frame_clause: %empty */ +#line 1188 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 5100 "bison_parser.cpp" +#line 5096 "bison_parser.cpp" break; - case 247: /* frame_type: RANGE */ -#line 1180 "bison_parser.y" + case 245: /* frame_type: RANGE */ +#line 1192 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 5106 "bison_parser.cpp" +#line 5102 "bison_parser.cpp" break; - case 248: /* frame_type: ROWS */ -#line 1181 "bison_parser.y" + case 246: /* frame_type: ROWS */ +#line 1193 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 5112 "bison_parser.cpp" +#line 5108 "bison_parser.cpp" break; - case 249: /* frame_type: GROUPS */ -#line 1182 "bison_parser.y" + case 247: /* frame_type: GROUPS */ +#line 1194 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5118 "bison_parser.cpp" +#line 5114 "bison_parser.cpp" break; - case 250: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1184 "bison_parser.y" + case 248: /* frame_bound: UNBOUNDED PRECEDING */ +#line 1196 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5124 "bison_parser.cpp" +#line 5120 "bison_parser.cpp" break; - case 251: /* frame_bound: INTVAL PRECEDING */ -#line 1185 "bison_parser.y" + case 249: /* frame_bound: INTVAL PRECEDING */ +#line 1197 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5130 "bison_parser.cpp" +#line 5126 "bison_parser.cpp" break; - case 252: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1186 "bison_parser.y" + case 250: /* frame_bound: UNBOUNDED FOLLOWING */ +#line 1198 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5136 "bison_parser.cpp" +#line 5132 "bison_parser.cpp" break; - case 253: /* frame_bound: INTVAL FOLLOWING */ -#line 1187 "bison_parser.y" + case 251: /* frame_bound: INTVAL FOLLOWING */ +#line 1199 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5142 "bison_parser.cpp" +#line 5138 "bison_parser.cpp" break; - case 254: /* frame_bound: CURRENT_ROW */ -#line 1188 "bison_parser.y" + case 252: /* frame_bound: CURRENT_ROW */ +#line 1200 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5148 "bison_parser.cpp" +#line 5144 "bison_parser.cpp" break; - case 255: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1190 "bison_parser.y" + case 253: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1202 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5154 "bison_parser.cpp" +#line 5150 "bison_parser.cpp" break; - case 256: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1192 "bison_parser.y" + case 254: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1204 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5160 "bison_parser.cpp" +#line 5156 "bison_parser.cpp" break; - case 257: /* datetime_field: SECOND */ -#line 1194 "bison_parser.y" + case 255: /* datetime_field: SECOND */ +#line 1206 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5166 "bison_parser.cpp" +#line 5162 "bison_parser.cpp" break; - case 258: /* datetime_field: MINUTE */ -#line 1195 "bison_parser.y" + case 256: /* datetime_field: MINUTE */ +#line 1207 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5172 "bison_parser.cpp" +#line 5168 "bison_parser.cpp" break; - case 259: /* datetime_field: HOUR */ -#line 1196 "bison_parser.y" + case 257: /* datetime_field: HOUR */ +#line 1208 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5178 "bison_parser.cpp" +#line 5174 "bison_parser.cpp" break; - case 260: /* datetime_field: DAY */ -#line 1197 "bison_parser.y" + case 258: /* datetime_field: DAY */ +#line 1209 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5184 "bison_parser.cpp" +#line 5180 "bison_parser.cpp" break; - case 261: /* datetime_field: MONTH */ -#line 1198 "bison_parser.y" + case 259: /* datetime_field: MONTH */ +#line 1210 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5190 "bison_parser.cpp" +#line 5186 "bison_parser.cpp" break; - case 262: /* datetime_field: YEAR */ -#line 1199 "bison_parser.y" + case 260: /* datetime_field: YEAR */ +#line 1211 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5196 "bison_parser.cpp" +#line 5192 "bison_parser.cpp" break; - case 263: /* datetime_field_plural: SECONDS */ -#line 1201 "bison_parser.y" + case 261: /* datetime_field_plural: SECONDS */ +#line 1213 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5202 "bison_parser.cpp" +#line 5198 "bison_parser.cpp" break; - case 264: /* datetime_field_plural: MINUTES */ -#line 1202 "bison_parser.y" + case 262: /* datetime_field_plural: MINUTES */ +#line 1214 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5208 "bison_parser.cpp" +#line 5204 "bison_parser.cpp" break; - case 265: /* datetime_field_plural: HOURS */ -#line 1203 "bison_parser.y" + case 263: /* datetime_field_plural: HOURS */ +#line 1215 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5214 "bison_parser.cpp" +#line 5210 "bison_parser.cpp" break; - case 266: /* datetime_field_plural: DAYS */ -#line 1204 "bison_parser.y" + case 264: /* datetime_field_plural: DAYS */ +#line 1216 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5220 "bison_parser.cpp" +#line 5216 "bison_parser.cpp" break; - case 267: /* datetime_field_plural: MONTHS */ -#line 1205 "bison_parser.y" + case 265: /* datetime_field_plural: MONTHS */ +#line 1217 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5226 "bison_parser.cpp" +#line 5222 "bison_parser.cpp" break; - case 268: /* datetime_field_plural: YEARS */ -#line 1206 "bison_parser.y" + case 266: /* datetime_field_plural: YEARS */ +#line 1218 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5232 "bison_parser.cpp" +#line 5228 "bison_parser.cpp" break; - case 271: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1210 "bison_parser.y" + case 269: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1222 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5238 "bison_parser.cpp" +#line 5234 "bison_parser.cpp" break; - case 272: /* array_index: operand '[' int_literal ']' */ -#line 1212 "bison_parser.y" + case 270: /* array_index: operand '[' int_literal ']' */ +#line 1224 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5244 "bison_parser.cpp" +#line 5240 "bison_parser.cpp" break; - case 273: /* between_expr: operand BETWEEN operand AND operand */ -#line 1214 "bison_parser.y" + case 271: /* between_expr: operand BETWEEN operand AND operand */ +#line 1226 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5250 "bison_parser.cpp" +#line 5246 "bison_parser.cpp" break; - case 274: /* column_name: IDENTIFIER */ -#line 1216 "bison_parser.y" + case 272: /* column_name: IDENTIFIER */ +#line 1228 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5256 "bison_parser.cpp" +#line 5252 "bison_parser.cpp" break; - case 275: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1217 "bison_parser.y" + case 273: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1229 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5262 "bison_parser.cpp" +#line 5258 "bison_parser.cpp" break; - case 276: /* column_name: '*' */ -#line 1218 "bison_parser.y" + case 274: /* column_name: '*' */ +#line 1230 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5268 "bison_parser.cpp" +#line 5264 "bison_parser.cpp" break; - case 277: /* column_name: IDENTIFIER '.' '*' */ -#line 1219 "bison_parser.y" + case 275: /* column_name: IDENTIFIER '.' '*' */ +#line 1231 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5274 "bison_parser.cpp" +#line 5270 "bison_parser.cpp" break; - case 285: /* string_literal: STRING */ -#line 1223 "bison_parser.y" + case 283: /* string_literal: STRING */ +#line 1235 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5280 "bison_parser.cpp" +#line 5276 "bison_parser.cpp" break; - case 286: /* bool_literal: TRUE */ -#line 1225 "bison_parser.y" + case 284: /* bool_literal: TRUE */ +#line 1237 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5286 "bison_parser.cpp" +#line 5282 "bison_parser.cpp" break; - case 287: /* bool_literal: FALSE */ -#line 1226 "bison_parser.y" + case 285: /* bool_literal: FALSE */ +#line 1238 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5292 "bison_parser.cpp" +#line 5288 "bison_parser.cpp" break; - case 288: /* num_literal: FLOATVAL */ -#line 1228 "bison_parser.y" + case 286: /* num_literal: FLOATVAL */ +#line 1240 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5298 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; - case 290: /* int_literal: INTVAL */ -#line 1231 "bison_parser.y" + case 288: /* int_literal: INTVAL */ +#line 1243 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5304 "bison_parser.cpp" +#line 5300 "bison_parser.cpp" break; - case 291: /* null_literal: NULL */ -#line 1233 "bison_parser.y" + case 289: /* null_literal: NULL */ +#line 1245 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5310 "bison_parser.cpp" +#line 5306 "bison_parser.cpp" break; - case 292: /* date_literal: DATE STRING */ -#line 1235 "bison_parser.y" + case 290: /* date_literal: DATE STRING */ +#line 1247 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5321,17 +5317,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5325 "bison_parser.cpp" +#line 5321 "bison_parser.cpp" break; - case 293: /* interval_literal: INTVAL duration_field */ -#line 1246 "bison_parser.y" + case 291: /* interval_literal: INTVAL duration_field */ +#line 1258 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5331 "bison_parser.cpp" +#line 5327 "bison_parser.cpp" break; - case 294: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1247 "bison_parser.y" + case 292: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1259 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5343,11 +5339,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5347 "bison_parser.cpp" +#line 5343 "bison_parser.cpp" break; - case 295: /* interval_literal: INTERVAL STRING */ -#line 1258 "bison_parser.y" + case 293: /* interval_literal: INTERVAL STRING */ +#line 1270 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5379,61 +5375,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5383 "bison_parser.cpp" +#line 5379 "bison_parser.cpp" break; - case 296: /* param_expr: '?' */ -#line 1290 "bison_parser.y" + case 294: /* param_expr: '?' */ +#line 1302 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5393 "bison_parser.cpp" +#line 5389 "bison_parser.cpp" break; - case 298: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1299 "bison_parser.y" + case 296: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1311 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5404 "bison_parser.cpp" +#line 5400 "bison_parser.cpp" break; - case 302: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1308 "bison_parser.y" + case 300: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1320 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5415 "bison_parser.cpp" +#line 5411 "bison_parser.cpp" break; - case 303: /* table_ref_commalist: table_ref_atomic */ -#line 1315 "bison_parser.y" + case 301: /* table_ref_commalist: table_ref_atomic */ +#line 1327 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5424 "bison_parser.cpp" +#line 5420 "bison_parser.cpp" break; - case 304: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1319 "bison_parser.y" + case 302: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1331 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5433 "bison_parser.cpp" +#line 5429 "bison_parser.cpp" break; - case 305: /* table_ref_name: table_name opt_table_alias */ -#line 1324 "bison_parser.y" + case 303: /* table_ref_name: table_name opt_table_alias */ +#line 1336 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5441,215 +5437,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5445 "bison_parser.cpp" +#line 5441 "bison_parser.cpp" break; - case 306: /* table_ref_name_no_alias: table_name */ -#line 1332 "bison_parser.y" + case 304: /* table_ref_name_no_alias: table_name */ +#line 1344 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5455 "bison_parser.cpp" +#line 5451 "bison_parser.cpp" break; - case 307: /* table_name: IDENTIFIER */ -#line 1338 "bison_parser.y" + case 305: /* table_name: IDENTIFIER */ +#line 1350 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5464 "bison_parser.cpp" +#line 5460 "bison_parser.cpp" break; - case 308: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1342 "bison_parser.y" + case 306: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1354 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5473 "bison_parser.cpp" +#line 5469 "bison_parser.cpp" break; - case 309: /* opt_index_name: IDENTIFIER */ -#line 1347 "bison_parser.y" + case 307: /* opt_index_name: IDENTIFIER */ +#line 1359 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5479 "bison_parser.cpp" +#line 5475 "bison_parser.cpp" break; - case 310: /* opt_index_name: %empty */ -#line 1348 "bison_parser.y" + case 308: /* opt_index_name: %empty */ +#line 1360 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5485 "bison_parser.cpp" +#line 5481 "bison_parser.cpp" break; - case 312: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1350 "bison_parser.y" + case 310: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1362 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5491 "bison_parser.cpp" +#line 5487 "bison_parser.cpp" break; - case 314: /* opt_table_alias: %empty */ -#line 1352 "bison_parser.y" + case 312: /* opt_table_alias: %empty */ +#line 1364 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5497 "bison_parser.cpp" +#line 5493 "bison_parser.cpp" break; - case 315: /* alias: AS IDENTIFIER */ -#line 1354 "bison_parser.y" + case 313: /* alias: AS IDENTIFIER */ +#line 1366 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5503 "bison_parser.cpp" +#line 5499 "bison_parser.cpp" break; - case 316: /* alias: IDENTIFIER */ -#line 1355 "bison_parser.y" + case 314: /* alias: IDENTIFIER */ +#line 1367 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5509 "bison_parser.cpp" +#line 5505 "bison_parser.cpp" break; - case 318: /* opt_alias: %empty */ -#line 1357 "bison_parser.y" + case 316: /* opt_alias: %empty */ +#line 1369 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5515 "bison_parser.cpp" +#line 5511 "bison_parser.cpp" break; - case 319: /* opt_locking_clause: opt_locking_clause_list */ -#line 1363 "bison_parser.y" + case 317: /* opt_locking_clause: opt_locking_clause_list */ +#line 1375 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5521 "bison_parser.cpp" +#line 5517 "bison_parser.cpp" break; - case 320: /* opt_locking_clause: %empty */ -#line 1364 "bison_parser.y" + case 318: /* opt_locking_clause: %empty */ +#line 1376 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5527 "bison_parser.cpp" +#line 5523 "bison_parser.cpp" break; - case 321: /* opt_locking_clause_list: locking_clause */ -#line 1366 "bison_parser.y" + case 319: /* opt_locking_clause_list: locking_clause */ +#line 1378 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5536 "bison_parser.cpp" +#line 5532 "bison_parser.cpp" break; - case 322: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1370 "bison_parser.y" + case 320: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ +#line 1382 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5545 "bison_parser.cpp" +#line 5541 "bison_parser.cpp" break; - case 323: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1375 "bison_parser.y" + case 321: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ +#line 1387 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5556 "bison_parser.cpp" +#line 5552 "bison_parser.cpp" break; - case 324: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1381 "bison_parser.y" + case 322: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ +#line 1393 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5567 "bison_parser.cpp" +#line 5563 "bison_parser.cpp" break; - case 325: /* row_lock_mode: UPDATE */ -#line 1388 "bison_parser.y" + case 323: /* row_lock_mode: UPDATE */ +#line 1400 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5573 "bison_parser.cpp" +#line 5569 "bison_parser.cpp" break; - case 326: /* row_lock_mode: NO KEY UPDATE */ -#line 1389 "bison_parser.y" + case 324: /* row_lock_mode: NO KEY UPDATE */ +#line 1401 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5579 "bison_parser.cpp" +#line 5575 "bison_parser.cpp" break; - case 327: /* row_lock_mode: SHARE */ -#line 1390 "bison_parser.y" + case 325: /* row_lock_mode: SHARE */ +#line 1402 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5585 "bison_parser.cpp" +#line 5581 "bison_parser.cpp" break; - case 328: /* row_lock_mode: KEY SHARE */ -#line 1391 "bison_parser.y" + case 326: /* row_lock_mode: KEY SHARE */ +#line 1403 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5591 "bison_parser.cpp" +#line 5587 "bison_parser.cpp" break; - case 329: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1393 "bison_parser.y" + case 327: /* opt_row_lock_policy: SKIP LOCKED */ +#line 1405 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5597 "bison_parser.cpp" +#line 5593 "bison_parser.cpp" break; - case 330: /* opt_row_lock_policy: NOWAIT */ -#line 1394 "bison_parser.y" + case 328: /* opt_row_lock_policy: NOWAIT */ +#line 1406 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5603 "bison_parser.cpp" +#line 5599 "bison_parser.cpp" break; - case 331: /* opt_row_lock_policy: %empty */ -#line 1395 "bison_parser.y" + case 329: /* opt_row_lock_policy: %empty */ +#line 1407 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5609 "bison_parser.cpp" +#line 5605 "bison_parser.cpp" break; - case 333: /* opt_with_clause: %empty */ -#line 1401 "bison_parser.y" + case 331: /* opt_with_clause: %empty */ +#line 1413 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5615 "bison_parser.cpp" +#line 5611 "bison_parser.cpp" break; - case 334: /* with_clause: WITH with_description_list */ -#line 1403 "bison_parser.y" + case 332: /* with_clause: WITH with_description_list */ +#line 1415 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5621 "bison_parser.cpp" +#line 5617 "bison_parser.cpp" break; - case 335: /* with_description_list: with_description */ -#line 1405 "bison_parser.y" + case 333: /* with_description_list: with_description */ +#line 1417 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5630 "bison_parser.cpp" +#line 5626 "bison_parser.cpp" break; - case 336: /* with_description_list: with_description_list ',' with_description */ -#line 1409 "bison_parser.y" + case 334: /* with_description_list: with_description_list ',' with_description */ +#line 1421 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5639 "bison_parser.cpp" +#line 5635 "bison_parser.cpp" break; - case 337: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1414 "bison_parser.y" + case 335: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1426 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5649 "bison_parser.cpp" +#line 5645 "bison_parser.cpp" break; - case 338: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1424 "bison_parser.y" + case 336: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1436 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5657,11 +5653,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5661 "bison_parser.cpp" +#line 5657 "bison_parser.cpp" break; - case 339: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1431 "bison_parser.y" + case 337: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1443 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5670,11 +5666,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5674 "bison_parser.cpp" +#line 5670 "bison_parser.cpp" break; - case 340: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1439 "bison_parser.y" + case 338: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ +#line 1451 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5683,89 +5679,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5687 "bison_parser.cpp" +#line 5683 "bison_parser.cpp" break; - case 341: /* opt_join_type: INNER */ -#line 1448 "bison_parser.y" + case 339: /* opt_join_type: INNER */ +#line 1460 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5693 "bison_parser.cpp" +#line 5689 "bison_parser.cpp" break; - case 342: /* opt_join_type: LEFT OUTER */ -#line 1449 "bison_parser.y" + case 340: /* opt_join_type: LEFT OUTER */ +#line 1461 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5699 "bison_parser.cpp" +#line 5695 "bison_parser.cpp" break; - case 343: /* opt_join_type: LEFT */ -#line 1450 "bison_parser.y" + case 341: /* opt_join_type: LEFT */ +#line 1462 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5705 "bison_parser.cpp" +#line 5701 "bison_parser.cpp" break; - case 344: /* opt_join_type: RIGHT OUTER */ -#line 1451 "bison_parser.y" + case 342: /* opt_join_type: RIGHT OUTER */ +#line 1463 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5711 "bison_parser.cpp" +#line 5707 "bison_parser.cpp" break; - case 345: /* opt_join_type: RIGHT */ -#line 1452 "bison_parser.y" + case 343: /* opt_join_type: RIGHT */ +#line 1464 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5717 "bison_parser.cpp" +#line 5713 "bison_parser.cpp" break; - case 346: /* opt_join_type: FULL OUTER */ -#line 1453 "bison_parser.y" + case 344: /* opt_join_type: FULL OUTER */ +#line 1465 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5723 "bison_parser.cpp" +#line 5719 "bison_parser.cpp" break; - case 347: /* opt_join_type: OUTER */ -#line 1454 "bison_parser.y" + case 345: /* opt_join_type: OUTER */ +#line 1466 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5729 "bison_parser.cpp" +#line 5725 "bison_parser.cpp" break; - case 348: /* opt_join_type: FULL */ -#line 1455 "bison_parser.y" + case 346: /* opt_join_type: FULL */ +#line 1467 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5735 "bison_parser.cpp" +#line 5731 "bison_parser.cpp" break; - case 349: /* opt_join_type: CROSS */ -#line 1456 "bison_parser.y" + case 347: /* opt_join_type: CROSS */ +#line 1468 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5741 "bison_parser.cpp" +#line 5737 "bison_parser.cpp" break; - case 350: /* opt_join_type: %empty */ -#line 1457 "bison_parser.y" + case 348: /* opt_join_type: %empty */ +#line 1469 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5747 "bison_parser.cpp" +#line 5743 "bison_parser.cpp" break; - case 354: /* ident_commalist: IDENTIFIER */ -#line 1468 "bison_parser.y" + case 352: /* ident_commalist: IDENTIFIER */ +#line 1480 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5756 "bison_parser.cpp" +#line 5752 "bison_parser.cpp" break; - case 355: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1472 "bison_parser.y" + case 353: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1484 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5765 "bison_parser.cpp" +#line 5761 "bison_parser.cpp" break; -#line 5769 "bison_parser.cpp" +#line 5765 "bison_parser.cpp" default: break; } @@ -5994,7 +5990,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1478 "bison_parser.y" +#line 1490 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 54d13f26..33583532 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -258,16 +258,14 @@ extern int hsql_debug; SQL_FOREIGN = 426, /* FOREIGN */ SQL_KEY = 427, /* KEY */ SQL_REFERENCES = 428, /* REFERENCES */ - SQL_DELIMITER = 429, /* DELIMITER */ - SQL_QUOTE = 430, /* QUOTE */ - SQL_EQUALS = 431, /* EQUALS */ - SQL_NOTEQUALS = 432, /* NOTEQUALS */ - SQL_LESS = 433, /* LESS */ - SQL_GREATER = 434, /* GREATER */ - SQL_LESSEQ = 435, /* LESSEQ */ - SQL_GREATEREQ = 436, /* GREATEREQ */ - SQL_NOTNULL = 437, /* NOTNULL */ - SQL_UMINUS = 438 /* UMINUS */ + SQL_EQUALS = 429, /* EQUALS */ + SQL_NOTEQUALS = 430, /* NOTEQUALS */ + SQL_LESS = 431, /* LESS */ + SQL_GREATER = 432, /* GREATER */ + SQL_LESSEQ = 433, /* LESSEQ */ + SQL_GREATEREQ = 434, /* GREATEREQ */ + SQL_NOTNULL = 435, /* NOTNULL */ + SQL_UMINUS = 436 /* UMINUS */ }; typedef enum hsql_tokentype hsql_token_kind_t; #endif @@ -346,10 +344,11 @@ union HSQL_STYPE hsql::RowLockWaitPolicy lock_wait_policy_t; hsql::ImportExportOptions* import_export_option_t; + hsql::CsvImportExportOptions* csv_import_export_option_t; // clang-format off -#line 353 "bison_parser.h" +#line 352 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 4a65e566..8294f9df 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -168,6 +168,7 @@ hsql::RowLockWaitPolicy lock_wait_policy_t; hsql::ImportExportOptions* import_export_option_t; + hsql::CsvImportExportOptions* csv_import_export_option_t; // clang-format off } @@ -230,7 +231,6 @@ %token NOWAIT SKIP LOCKED SHARE %token RANGE ROWS GROUPS UNBOUNDED FOLLOWING PRECEDING CURRENT_ROW %token UNIQUE PRIMARY FOREIGN KEY REFERENCES -%token DELIMITER QUOTE /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -293,6 +293,7 @@ // ImportType is used for compatibility reasons %type file_type %type opt_import_export_options import_export_options +%type csv_import_export_options %type ident_commalist opt_column_list %type expr_list select_list opt_extended_literal_list extended_literal_list hint_list opt_hints opt_partition @@ -468,17 +469,9 @@ import_statement : IMPORT FROM file_type FILE file_path INTO table_name { $$->encoding = $5->encoding; $5->encoding = nullptr; } - if ($5->delimiter) { - $$->delimiter = $5->delimiter; - $5->delimiter = nullptr; - } - if ($5->null) { - $$->null = $5->null; - $5->null = nullptr; - } - if ($5->quote) { - $$->quote = $5->quote; - $5->quote = nullptr; + if ($5->csv_options) { + $$->csv_options = $5->csv_options; + $5->csv_options = nullptr; } delete $5; }; @@ -510,6 +503,11 @@ import_export_options : import_export_options ',' FORMAT file_type { yyerror(&yyloc, result, scanner, "File type must only be provided once."); YYERROR; } + if ($1->csv_options && $4 != kImportCSV && $4 != kImportAuto) { + delete $1; + yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + YYERROR; + } $1->format = $4; $$ = $1; } @@ -531,48 +529,78 @@ import_export_options : import_export_options ',' FORMAT file_type { $$ = new ImportExportOptions{}; $$->encoding = $2; } -| import_export_options ',' DELIMITER STRING { - if ($1->delimiter) { +| import_export_options ',' csv_import_export_options { + if ($1->format != kImportAuto && $1->format != kImportCSV) { delete $1; - free($4); - yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + delete $3; + yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); YYERROR; } - $1->delimiter = $4; + + if ($1->csv_options) { + if ($1->csv_options->delimiter && $3->delimiter) { + delete $1; + delete $3; + yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); + YYERROR; + } + if ($1->csv_options->null && $3->null) { + delete $1; + delete $3; + yyerror(&yyloc, result, scanner, "Null string must only be provided once."); + YYERROR; + } + if ($1->csv_options->quote && $3->quote) { + delete $1; + delete $3; + yyerror(&yyloc, result, scanner, "Quote must only be provided once."); + YYERROR; + } + + if ($3->delimiter) { + $1->csv_options->delimiter = $3->delimiter; + $3->delimiter = nullptr; + } + if ($3->null) { + $1->csv_options->null = $3->null; + $3->null = nullptr; + + } + if ($3->quote) { + $1->csv_options->quote = $3->quote; + $3->quote = nullptr; + } + delete $3; + } else { + $1->csv_options = $3; + } + $$ = $1; } -| DELIMITER STRING { +| csv_import_export_options { $$ = new ImportExportOptions{}; - $$->delimiter = $2; + $$->csv_options = $1; } -| import_export_options ',' NULL STRING { - if ($1->null) { - delete $1; - free($4); - yyerror(&yyloc, result, scanner, "Null string must only be provided once."); + +csv_import_export_options : IDENTIFIER STRING { + $$ = new CsvImportExportOptions{}; + if (strcasecmp($1, "DELIMITER") == 0) { + $$->delimiter = $2; + } else if (strcasecmp($1, "QUOTE") == 0) { + $$->quote = $2; + } else { + delete $$; + free($1); + free($2); + yyerror(&yyloc, result, scanner, "Unknown identifier when parsing CSV options."); YYERROR; } - $1->null = $4; - $$ = $1; + free($1); } | NULL STRING { - $$ = new ImportExportOptions{}; + $$ = new CsvImportExportOptions{}; $$->null = $2; } -| import_export_options ',' QUOTE STRING { - if ($1->quote) { - delete $1; - free($4); - yyerror(&yyloc, result, scanner, "Quote string must only be provided once."); - YYERROR; - } - $1->quote = $4; - $$ = $1; -} -| QUOTE STRING { - $$ = new ImportExportOptions{}; - $$->quote = $2; -}; /****************************** * Export Statement @@ -588,17 +616,9 @@ export_statement : COPY table_name TO file_path opt_import_export_options { $$->encoding = $5->encoding; $5->encoding = nullptr; } - if ($5->delimiter) { - $$->delimiter = $5->delimiter; - $5->delimiter = nullptr; - } - if ($5->null) { - $$->null = $5->null; - $5->null = nullptr; - } - if ($5->quote) { - $$->quote = $5->quote; - $5->quote = nullptr; + if ($5->csv_options) { + $$->csv_options = $5->csv_options; + $5->csv_options = nullptr; } delete $5; } @@ -610,17 +630,9 @@ export_statement : COPY table_name TO file_path opt_import_export_options { $$->encoding = $5->encoding; $5->encoding = nullptr; } - if ($5->delimiter) { - $$->delimiter = $5->delimiter; - $5->delimiter = nullptr; - } - if ($5->null) { - $$->null = $5->null; - $5->null = nullptr; - } - if ($5->quote) { - $$->quote = $5->quote; - $5->quote = nullptr; + if ($5->csv_options) { + $$->csv_options = $5->csv_options; + $5->csv_options = nullptr; } delete $5; }; diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 688a0115..c544b92f 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 191 -#define YY_END_OF_BUFFER 192 +#define YY_NUM_RULES 189 +#define YY_END_OF_BUFFER 190 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,31 +582,30 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1390] = +static const flex_int16_t yy_accept[1368] = { 0, - 0, 0, 188, 188, 2, 2, 192, 190, 4, 4, - 190, 190, 179, 186, 179, 179, 183, 179, 179, 179, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 179, 188, 189, 2, 2, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 186, 186, 2, 2, 190, 188, 4, 4, + 188, 188, 177, 184, 177, 177, 181, 177, 177, 177, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 177, 186, 187, 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, 4, 174, 0, - 1, 0, 181, 180, 183, 176, 175, 173, 177, 185, - - 185, 185, 185, 185, 185, 12, 185, 185, 185, 19, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 74, 185, 185, 77, 86, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 104, - 185, 185, 109, 112, 113, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 151, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 178, 188, 187, 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, 4, 172, 0, 1, 0, + 179, 178, 181, 174, 173, 171, 175, 183, 183, 183, + + 183, 183, 183, 12, 183, 183, 183, 19, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 73, 183, 183, 76, 85, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 103, 183, 183, + 108, 111, 112, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 149, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 176, 186, 185, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -615,21 +614,22 @@ static const flex_int16_t yy_accept[1390] = 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, - 184, 0, 180, 5, 185, 7, 185, 185, 10, 185, - - 13, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 34, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 50, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 61, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 81, 185, 185, 89, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 105, 185, - 185, 185, 110, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 137, 185, 185, 185, 185, 185, 185, 185, - - 185, 185, 185, 185, 152, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 2, + 2, 2, 2, 2, 2, 2, 182, 0, 178, 5, + 183, 7, 183, 183, 10, 183, 13, 183, 183, 183, + + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 34, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 49, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 60, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 80, 183, 183, 88, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 104, 183, 183, 183, 109, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 135, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 150, + + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 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, @@ -643,25 +643,24 @@ static const flex_int16_t yy_accept[1390] = 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, 0, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 20, 185, - 22, 23, 24, 185, 185, 185, 29, 185, 185, 185, - 32, 35, 185, 185, 185, 185, 185, 185, 42, 185, - 185, 185, 47, 48, 185, 185, 185, 185, 185, 185, - 185, 185, 58, 185, 185, 185, 185, 64, 65, 185, - - 185, 69, 185, 71, 72, 185, 185, 185, 185, 185, - 185, 85, 185, 88, 90, 91, 185, 93, 185, 185, - 96, 185, 185, 185, 185, 185, 107, 185, 185, 185, - 185, 116, 185, 185, 119, 185, 185, 185, 185, 185, - 125, 185, 185, 185, 185, 185, 131, 185, 185, 185, - 185, 139, 140, 185, 185, 185, 185, 185, 147, 148, - 149, 185, 154, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 164, 185, 166, 185, 168, 169, 2, 2, + 2, 2, 0, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 20, 183, 22, 23, 24, 183, 183, 183, + 29, 183, 183, 183, 32, 35, 183, 183, 183, 183, + 183, 41, 183, 183, 183, 46, 47, 183, 183, 183, + 183, 183, 183, 183, 183, 57, 183, 183, 183, 183, + 63, 64, 183, 183, 68, 183, 70, 71, 183, 183, + + 183, 183, 183, 183, 84, 183, 87, 89, 90, 183, + 92, 183, 183, 95, 183, 183, 183, 183, 183, 106, + 183, 183, 183, 183, 115, 183, 183, 118, 183, 183, + 183, 183, 123, 183, 183, 183, 183, 183, 129, 183, + 183, 183, 183, 137, 138, 183, 183, 183, 183, 183, + 145, 146, 147, 183, 152, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 162, 183, 164, 183, 166, 167, 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, @@ -671,19 +670,19 @@ static const flex_int16_t yy_accept[1390] = 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, 0, 6, - 8, 185, 11, 185, 15, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 31, 185, 185, 185, 185, 185, - 185, 185, 41, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 57, 59, 185, 185, 185, 185, - 67, 185, 73, 75, 185, 78, 79, 185, 185, 185, - 185, 92, 94, 185, 97, 98, 185, 101, 185, 185, - 185, 185, 114, 115, 185, 185, 185, 185, 185, 123, - 124, 185, 185, 185, 129, 185, 185, 185, 185, 138, - 185, 185, 185, 144, 185, 185, 185, 185, 185, 157, - - 185, 185, 185, 161, 185, 185, 185, 167, 170, 2, + + 8, 183, 11, 183, 15, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 31, 183, 183, 183, 183, 183, + 183, 40, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 56, 58, 183, 183, 183, 183, 66, + 183, 72, 74, 183, 77, 78, 183, 183, 183, 183, + 91, 93, 183, 96, 97, 183, 100, 183, 183, 183, + 183, 113, 114, 183, 183, 183, 183, 183, 122, 183, + 183, 183, 127, 183, 183, 183, 183, 136, 183, 183, + 183, 142, 183, 183, 183, 183, 183, 155, 183, 183, + 183, 159, 183, 183, 183, 165, 168, 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, @@ -693,49 +692,48 @@ static const flex_int16_t yy_accept[1390] = 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, 0, 183, 14, 183, + + 17, 183, 183, 183, 25, 27, 183, 30, 183, 183, + 183, 183, 183, 39, 183, 43, 183, 45, 183, 50, + 51, 183, 53, 183, 183, 183, 183, 62, 65, 67, + 69, 75, 79, 183, 183, 183, 86, 94, 98, 101, + 183, 105, 183, 110, 183, 183, 183, 183, 183, 183, + 125, 183, 183, 130, 132, 134, 183, 140, 183, 143, + 183, 183, 183, 183, 183, 156, 157, 158, 160, 183, + 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 185, 14, 185, 17, 185, 185, 185, 25, 27, - 185, 30, 185, 185, 185, 185, 185, 39, 185, 185, - 44, 185, 46, 185, 51, 52, 185, 54, 185, 185, - 185, 185, 63, 66, 68, 70, 76, 80, 185, 185, - 185, 87, 95, 99, 102, 185, 106, 185, 111, 185, - 185, 185, 185, 185, 185, 127, 185, 185, 132, 134, - 136, 185, 142, 185, 145, 185, 185, 185, 185, 185, - 158, 159, 160, 162, 185, 185, 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, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 9, 16, 18, 21, 185, 26, 28, - 185, 185, 185, 37, 38, 185, 185, 185, 185, 53, - 55, 56, 185, 62, 82, 185, 185, 100, 103, 185, - 185, 185, 185, 121, 122, 185, 185, 185, 133, 135, + 2, 2, 2, 2, 2, 2, 0, 9, 16, 18, + 21, 183, 26, 28, 183, 183, 183, 37, 38, 183, + 183, 183, 52, 54, 55, 183, 61, 81, 183, 183, + 99, 102, 183, 183, 183, 183, 120, 121, 183, 183, + 183, 131, 133, 183, 141, 183, 183, 183, 183, 183, + 161, 163, 2, 2, 2, 2, 2, 2, 2, 2, - 185, 143, 185, 185, 185, 185, 185, 163, 165, 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, 0, 185, 0, 33, - 185, 185, 43, 45, 49, 185, 185, 84, 108, 185, - 185, 185, 185, 128, 130, 141, 185, 185, 185, 155, - 185, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 183, + 0, 33, 183, 42, 44, 48, 183, 183, 83, 107, + 183, 183, 183, 183, 126, 128, 139, 183, 183, 183, + 153, 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 183, 0, 183, + 59, 82, 183, 117, 119, 183, 144, 148, 183, 154, - 2, 2, 2, 2, 2, 2, 0, 185, 0, 185, - 40, 60, 83, 185, 118, 120, 185, 146, 150, 185, - 156, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 0, 0, 36, - 117, 126, 185, 2, 2, 2, 2, 2, 2, 2, - 0, 0, 171, 153, 2, 2, 2, 2, 0, 0, - 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, - 0, 0, 2, 2, 0, 0, 2, 2, 0, 172, - 2, 2, 0, 2, 0, 2, 182, 2, 0 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 0, 36, 116, 124, + 183, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 169, 151, 2, 2, 2, 2, 0, 0, 2, 2, + 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, + 2, 2, 0, 0, 2, 2, 0, 170, 2, 2, + 0, 2, 0, 2, 180, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -782,1334 +780,1315 @@ static const YY_CHAR yy_meta[77] = 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1397] = +static const flex_int16_t yy_base[1375] = { 0, - 0, 0, 798, 797, 76, 0, 803, 9080, 151, 153, - 780, 0, 9080, 9080, 149, 148, 160, 159, 778, 775, + 0, 0, 852, 842, 76, 0, 842, 8955, 151, 153, + 786, 0, 8955, 8955, 149, 148, 160, 159, 778, 775, 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, - 171, 215, 218, 244, 295, 257, 156, 309, 349, 392, - 307, 208, 226, 0, 174, 689, 0, 748, 0, 204, - 251, 702, 715, 0, 0, 232, 378, 451, 240, 682, - 673, 470, 546, 600, 652, 700, 752, 384, 458, 795, - 466, 532, 533, 534, 846, 895, 944, 589, 650, 990, - 1042, 644, 698, 587, 547, 664, 608, 300, 9080, 667, - 9080, 656, 1107, 1117, 1128, 9080, 9080, 9080, 9080, 0, - - 218, 243, 295, 318, 250, 305, 379, 305, 305, 0, - 344, 330, 715, 373, 314, 357, 756, 376, 385, 416, - 432, 462, 457, 801, 460, 465, 464, 495, 470, 483, - 481, 512, 531, 522, 539, 0, 558, 577, 838, 589, - 597, 586, 607, 603, 707, 609, 630, 633, 629, 697, - 652, 665, 705, 0, 714, 702, 758, 747, 765, 767, - 754, 757, 810, 771, 800, 805, 850, 817, 813, 854, - 842, 862, 863, 853, 866, 859, 857, 901, 903, 902, - 898, 896, 906, 914, 900, 920, 9080, 0, 9080, 0, - 307, 0, 643, 0, 601, 1138, 1148, 1159, 0, 0, - - 0, 0, 945, 1004, 1029, 1145, 1196, 1148, 961, 1242, - 1195, 1208, 1248, 1253, 1284, 1324, 1282, 1324, 1353, 1405, - 1402, 1333, 1398, 1413, 1462, 1458, 1511, 1459, 1505, 1470, - 1516, 1555, 1554, 1560, 1574, 1562, 1603, 1609, 1617, 1656, - 1657, 1706, 1655, 1702, 1707, 1755, 1803, 1855, 1717, 1753, - 1759, 1801, 1895, 1847, 1898, 1851, 1909, 1939, 1942, 1959, - 1987, 1999, 2001, 2013, 2001, 2065, 2049, 2062, 2106, 2155, - 2114, 2055, 2163, 2168, 2202, 2119, 2209, 2220, 2238, 2252, - 1210, 2303, 2278, 2264, 2305, 2316, 2328, 2354, 2366, 0, - 9080, 591, 1185, 0, 921, 0, 926, 943, 0, 956, - - 0, 946, 954, 944, 960, 992, 998, 1464, 996, 997, - 1008, 1019, 1027, 1052, 1036, 1040, 1054, 1043, 1051, 1055, - 1157, 1770, 1158, 1158, 1148, 1169, 1187, 1200, 1197, 0, - 1215, 1246, 1256, 1249, 1262, 1261, 1263, 1300, 1316, 1307, - 1348, 1315, 1338, 1357, 1350, 1374, 1374, 1371, 1383, 1393, - 1397, 1410, 1417, 1431, 1510, 1439, 1448, 0, 1460, 1486, - 1512, 1519, 1642, 1525, 1538, 1550, 1557, 1561, 0, 1617, - 1607, 1602, 1605, 1620, 1627, 1619, 1677, 1661, 1712, 1663, - 1657, 1679, 1675, 1714, 1720, 1703, 1758, 1757, 1755, 1771, - 1767, 1779, 0, 1777, 1796, 1807, 1812, 1806, 1807, 1821, - - 1821, 1829, 1848, 1863, 0, 1859, 1899, 1863, 1915, 1866, - 1910, 1906, 1904, 1964, 1948, 1952, 1989, 1974, 1999, 0, - 583, 2431, 2357, 2424, 2425, 2426, 2364, 2424, 2468, 2440, - 2479, 2480, 2515, 2493, 2522, 2525, 2574, 2573, 2565, 2587, - 2615, 2623, 2641, 2660, 2668, 2680, 2684, 2712, 2685, 2737, - 2724, 2752, 2765, 2778, 2790, 2818, 2803, 2831, 2832, 2857, - 2844, 2872, 2876, 2899, 2907, 2918, 2924, 2946, 2951, 2968, - 2986, 2993, 3011, 3034, 3035, 3036, 3074, 3082, 3087, 3123, - 3126, 3128, 3131, 3167, 3172, 3172, 3176, 3214, 3216, 3231, - 3265, 3317, 3257, 3279, 3314, 3305, 3339, 3358, 3367, 3365, - - 3403, 3406, 3426, 3428, 3441, 3493, 3460, 3543, 3476, 3519, - 3530, 3473, 3563, 3578, 3587, 3613, 3612, 3613, 3635, 3657, - 3665, 3670, 3695, 3709, 3710, 3709, 3744, 3753, 3757, 3793, - 3799, 3802, 3822, 3846, 3848, 3851, 3871, 3876, 3900, 3925, - 3892, 3925, 3944, 3968, 3974, 3987, 4015, 4023, 544, 2003, - 2049, 2044, 2047, 2057, 2064, 2077, 2096, 2117, 0, 2125, - 0, 0, 2126, 2119, 2124, 2117, 0, 2116, 2119, 2138, - 2161, 0, 2170, 2174, 2168, 2172, 2184, 2211, 2213, 2229, - 2228, 2253, 0, 0, 2267, 2259, 2270, 2278, 2291, 2321, - 2326, 2352, 0, 2345, 2358, 2368, 2384, 0, 0, 2386, - - 2401, 0, 2431, 0, 2427, 2442, 2465, 2466, 2481, 2482, - 2577, 0, 2489, 0, 0, 0, 2486, 0, 2511, 2537, - 0, 2543, 2614, 2546, 2540, 2551, 0, 2611, 2626, 2618, - 2619, 0, 2630, 2635, 0, 2644, 2653, 2687, 2686, 2715, - 0, 2723, 2732, 2730, 2734, 2757, 0, 2751, 2788, 2808, - 2816, 0, 0, 2812, 2839, 2843, 2860, 2863, 0, 0, - 2882, 2888, 0, 2913, 2914, 2927, 2946, 2978, 2967, 2982, - 3004, 3007, 0, 3008, 0, 3028, 0, 3018, 530, 4034, - 4053, 4078, 4081, 4100, 4083, 4122, 4127, 4135, 4144, 4174, - 4176, 4179, 4204, 4228, 4229, 4230, 4242, 4268, 4273, 4254, - - 4293, 4296, 4322, 4330, 4338, 4368, 4381, 4384, 4392, 4433, - 4419, 4434, 4464, 4475, 4478, 4506, 4519, 4520, 4555, 4571, - 4579, 4572, 4604, 4606, 4618, 4630, 4656, 4654, 4668, 4686, - 4700, 4698, 4705, 4735, 4741, 4752, 4753, 4787, 4795, 4798, - 4843, 4839, 4840, 4881, 4884, 4885, 4925, 4928, 4929, 4968, - 4973, 4976, 4975, 4978, 5018, 5018, 5026, 5062, 5070, 5071, - 5100, 5112, 5115, 5124, 5153, 5154, 5172, 5198, 5206, 5207, - 5220, 5242, 5256, 5261, 5280, 5305, 5306, 5320, 5347, 5351, - 5359, 5364, 5394, 5393, 5399, 5413, 5418, 5443, 5448, 5457, - 5457, 5492, 5493, 5511, 5534, 5535, 5575, 5576, 5589, 5625, - - 5633, 5638, 5636, 5672, 5674, 5677, 5686, 5693, 529, 0, - 0, 3037, 0, 3061, 0, 3072, 3064, 3094, 3099, 3112, - 3103, 3100, 3137, 3166, 0, 3160, 3176, 3174, 3201, 3193, - 3205, 3221, 0, 3235, 3229, 3236, 3246, 3245, 3270, 3259, - 3265, 3281, 3307, 3321, 0, 0, 3311, 3331, 3338, 3358, - 3355, 3371, 0, 0, 3360, 0, 0, 3366, 3391, 3501, - 3390, 0, 0, 3408, 0, 0, 3423, 3415, 3435, 3418, - 3432, 3449, 0, 0, 3471, 3462, 3501, 3489, 3508, 0, - 0, 3531, 3543, 3565, 0, 3576, 3589, 3604, 3596, 0, - 3632, 3638, 3645, 3637, 3639, 3641, 3675, 3677, 3667, 0, - - 3706, 3712, 3725, 0, 3720, 3769, 3773, 0, 0, 528, - 5711, 5729, 5735, 5753, 5764, 5778, 5786, 5804, 5816, 5828, - 5852, 5857, 5871, 5884, 5896, 5910, 5915, 5928, 5940, 5958, - 5965, 5966, 5988, 5990, 6012, 6014, 6019, 6042, 6044, 6066, - 6068, 6092, 6097, 6117, 6120, 6122, 6146, 6158, 6161, 6187, - 6165, 6203, 6214, 6206, 6244, 6247, 6250, 6258, 6288, 6301, - 6299, 6330, 6343, 6344, 6374, 6385, 6388, 6413, 6418, 6432, - 6456, 6474, 6465, 6505, 6509, 6517, 6532, 6557, 6558, 6586, - 6587, 6611, 6612, 6625, 6637, 6640, 6665, 6690, 6699, 6691, - 6704, 6739, 6748, 6757, 6764, 6783, 6792, 6813, 6834, 6837, - - 6853, 6881, 6893, 6896, 6905, 6930, 6939, 6958, 6977, 6981, - 522, 3770, 0, 3765, 0, 3774, 3788, 3802, 3806, 0, - 3818, 0, 3822, 3855, 3870, 3902, 3901, 0, 3904, 3925, - 0, 3932, 0, 3931, 0, 0, 3964, 0, 3956, 3955, - 3972, 3975, 0, 0, 0, 0, 0, 0, 3985, 3999, - 4016, 0, 0, 4003, 0, 4012, 0, 4035, 0, 4023, - 4046, 4048, 4076, 4064, 4087, 0, 4108, 4118, 4116, 4124, - 0, 4141, 0, 4151, 0, 4164, 4192, 4192, 4177, 4194, - 0, 0, 0, 0, 4182, 4191, 519, 6983, 7021, 7019, - 7025, 7028, 7036, 7072, 7070, 7071, 7079, 7114, 7115, 7128, - - 7161, 7158, 7164, 7182, 7205, 7218, 7224, 7259, 7260, 7268, - 7301, 7304, 7312, 7321, 7310, 7346, 7363, 7355, 7388, 7397, - 7406, 7430, 7439, 7448, 7474, 7459, 7499, 7497, 7521, 7504, - 7528, 7542, 7546, 7570, 7588, 7594, 7590, 7638, 7639, 7641, - 7643, 7673, 7692, 7696, 7715, 7734, 7738, 7757, 7776, 7780, - 7799, 7823, 7829, 7853, 7867, 7881, 7820, 7897, 7905, 7911, - 7935, 7946, 515, 0, 0, 0, 0, 4218, 0, 0, - 349, 4244, 4288, 0, 0, 4290, 4294, 4283, 4324, 0, - 0, 0, 4319, 0, 0, 4334, 4327, 0, 0, 4329, - 4346, 4341, 4358, 0, 0, 4372, 4370, 4380, 0, 0, - - 4393, 0, 4411, 4426, 4421, 4437, 4445, 0, 0, 507, - 7949, 7965, 7979, 7993, 8004, 8018, 8026, 8067, 8048, 8066, - 8080, 8092, 8105, 8106, 8120, 8144, 8118, 8156, 8159, 8163, - 8191, 8204, 8210, 8207, 8240, 8248, 8251, 8268, 8273, 8289, - 8300, 8319, 8333, 8330, 8371, 8374, 8375, 8415, 8418, 8426, - 8434, 8464, 8477, 8482, 8491, 8516, 492, 4436, 4694, 0, - 4439, 4446, 0, 0, 0, 4489, 4480, 0, 0, 4483, - 4499, 4529, 4532, 0, 0, 0, 4521, 4535, 4546, 0, - 4585, 476, 8517, 4746, 8531, 8545, 8546, 8570, 8571, 8584, - 8610, 8609, 8596, 8622, 8648, 8653, 8664, 8670, 8682, 8704, - - 8712, 8726, 8734, 8748, 8756, 8770, 471, 436, 4590, 4632, - 0, 0, 0, 4622, 0, 0, 4630, 0, 0, 4636, - 0, 470, 8802, 4652, 8784, 8810, 8824, 8832, 8831, 8839, - 8867, 8875, 8881, 8905, 8925, 8928, 442, 4843, 4698, 0, - 0, 0, 4731, 438, 4889, 4740, 8930, 8933, 8969, 8967, - 423, 4765, 9080, 0, 422, 4768, 0, 8976, 421, 4752, - 418, 4755, 388, 4750, 384, 4778, 366, 4799, 360, 4806, - 343, 4804, 338, 4806, 334, 4814, 332, 4822, 303, 9080, - 293, 0, 294, 286, 241, 216, 9080, 0, 9080, 9049, - 9054, 199, 9059, 9064, 9069, 9074 - + 171, 215, 218, 244, 295, 257, 0, 309, 349, 392, + 163, 279, 226, 180, 676, 0, 741, 0, 237, 251, + 696, 702, 0, 0, 243, 378, 451, 237, 682, 680, + 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, + 532, 533, 534, 846, 895, 944, 547, 602, 990, 1042, + 307, 650, 587, 651, 596, 301, 8955, 666, 8955, 636, + 1107, 1117, 1128, 8955, 8955, 8955, 8955, 0, 218, 243, + + 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, + 694, 389, 345, 440, 710, 387, 388, 436, 439, 476, + 463, 763, 460, 465, 480, 542, 481, 501, 521, 535, + 591, 539, 546, 0, 584, 581, 627, 592, 607, 637, + 657, 658, 717, 646, 658, 686, 681, 734, 705, 720, + 717, 0, 751, 739, 757, 745, 764, 766, 755, 810, + 769, 792, 770, 810, 811, 808, 817, 803, 822, 823, + 842, 827, 820, 842, 871, 861, 858, 862, 866, 897, + 872, 859, 879, 8955, 0, 8955, 0, 396, 0, 631, + 0, 614, 1138, 1148, 1159, 0, 0, 0, 0, 942, + + 945, 1029, 990, 1156, 1034, 1155, 1202, 934, 1030, 1168, + 1199, 1218, 1258, 1251, 1270, 1285, 1337, 1334, 1345, 1372, + 1272, 1422, 1391, 1471, 1399, 1443, 1397, 1481, 1483, 1492, + 1519, 1531, 1535, 1546, 1577, 1576, 1594, 1624, 1673, 1623, + 1629, 1648, 1673, 1721, 1773, 1677, 1719, 1765, 1774, 1814, + 1817, 1838, 1861, 1830, 1874, 1897, 1712, 1909, 1941, 1730, + 1916, 1993, 1946, 1972, 1990, 2042, 2015, 2033, 2059, 2081, + 2093, 2095, 2127, 2123, 2145, 2147, 2183, 2230, 2191, 2177, + 2222, 2239, 2265, 2274, 2287, 0, 8955, 601, 2352, 0, + 882, 0, 903, 900, 0, 933, 0, 940, 954, 941, + + 960, 988, 1001, 1156, 1038, 1038, 1050, 1044, 1137, 1162, + 1145, 1147, 1166, 1153, 1166, 1203, 1216, 1260, 1221, 1220, + 1207, 1226, 1215, 1229, 1247, 0, 1280, 1309, 1317, 1309, + 1321, 1317, 1317, 1339, 1344, 1356, 1369, 1376, 1378, 1390, + 1379, 1412, 1422, 1423, 1426, 1437, 1436, 1449, 1451, 1480, + 1537, 1469, 1488, 0, 1490, 1516, 1530, 1537, 1593, 1538, + 1543, 1532, 1555, 1557, 0, 1592, 1602, 1606, 1613, 1638, + 1640, 1630, 1682, 1672, 1753, 1727, 1734, 1739, 1770, 1779, + 1761, 1782, 1779, 1776, 1795, 1790, 1838, 0, 1827, 1824, + 1867, 1880, 1875, 1876, 1887, 1888, 1886, 1918, 1932, 0, + + 1933, 1974, 1934, 1993, 1948, 1999, 1987, 1998, 2046, 2027, + 2032, 2064, 2045, 2074, 0, 600, 2362, 2355, 2356, 2357, + 2358, 2281, 2392, 2400, 2401, 2412, 2440, 2448, 2453, 2455, + 2469, 2518, 2494, 2519, 2532, 2568, 2544, 2580, 2578, 2609, + 2621, 2623, 2637, 2662, 2680, 2677, 2712, 2721, 2730, 2756, + 2771, 2769, 2774, 2810, 2819, 2824, 2854, 2826, 2829, 2869, + 2880, 2880, 2902, 2921, 2934, 2943, 2968, 2979, 2992, 3015, + 3017, 3032, 3058, 3066, 3080, 3092, 3104, 3106, 3118, 3130, + 3145, 3149, 3173, 3174, 3193, 3218, 3270, 3196, 3232, 3267, + 3231, 3292, 3295, 3320, 3327, 3341, 3355, 3366, 3380, 3395, + + 3447, 3395, 3497, 3430, 3473, 3414, 3493, 3532, 3541, 3544, + 3551, 3575, 3576, 3595, 3598, 3600, 3630, 3644, 3649, 3605, + 3659, 3683, 3697, 3701, 3737, 3741, 3749, 3754, 3781, 3797, + 3798, 3830, 3844, 3856, 3844, 3885, 3888, 3891, 3926, 3935, + 3944, 3970, 582, 2085, 2089, 2090, 2091, 2104, 2130, 2148, + 2147, 2171, 0, 2192, 0, 0, 2193, 2197, 2215, 2208, + 0, 2218, 2230, 2245, 2238, 0, 2248, 2273, 2277, 2283, + 2303, 2290, 2306, 2302, 2356, 0, 0, 2365, 2359, 2360, + 2357, 2403, 2428, 2431, 2429, 0, 2440, 2455, 2466, 2476, + 0, 0, 2485, 2475, 0, 2511, 0, 2510, 2526, 2517, + + 2555, 2564, 2569, 2600, 0, 2586, 0, 0, 0, 2591, + 0, 2601, 2626, 0, 2634, 2660, 2633, 2625, 2663, 0, + 2681, 2686, 2675, 2678, 0, 2688, 2716, 0, 2728, 2739, + 2740, 2738, 0, 2757, 2777, 2773, 2775, 2798, 0, 2791, + 2795, 2834, 2868, 0, 0, 2862, 2877, 2882, 2892, 2883, + 0, 0, 2883, 2904, 0, 2925, 2915, 2923, 2921, 2945, + 2931, 2950, 2956, 2982, 0, 2973, 0, 2992, 0, 2982, + 544, 3979, 3988, 4017, 4026, 4039, 4026, 4051, 4076, 4077, + 4089, 4111, 4119, 4133, 4145, 4159, 4171, 4197, 4185, 4199, + 4206, 4223, 4249, 4235, 4249, 4270, 4293, 4306, 4336, 4344, + + 4362, 4261, 4385, 4386, 4404, 4430, 4444, 4458, 4472, 4486, + 4502, 4528, 4519, 4545, 4553, 4567, 4579, 4597, 4605, 4619, + 4631, 4649, 4657, 4656, 4684, 4692, 4685, 4727, 4700, 4736, + 4752, 4797, 4766, 4794, 4808, 4827, 4838, 4841, 4857, 4871, + 4896, 4904, 4909, 4911, 4925, 4951, 4963, 4968, 4976, 4998, + 5017, 5036, 5051, 5077, 5080, 5089, 5115, 5133, 5134, 5159, + 5168, 5187, 5209, 5212, 5238, 5250, 5241, 5263, 4970, 5294, + 5289, 5302, 5307, 5024, 5321, 5343, 5346, 5351, 5365, 5387, + 5392, 5396, 5422, 5441, 5438, 5464, 5483, 5497, 5494, 5525, + 5449, 5542, 5537, 5576, 5577, 5578, 5590, 5592, 543, 0, + + 0, 3009, 0, 3040, 0, 3046, 3035, 3059, 3061, 3090, + 3085, 3094, 3110, 3142, 0, 3135, 3144, 3152, 3176, 3195, + 3210, 0, 3208, 3211, 3239, 3254, 3253, 3264, 3267, 3271, + 3286, 3302, 3313, 0, 0, 3300, 3323, 3316, 3337, 3342, + 3363, 0, 0, 3364, 0, 0, 3370, 3398, 3442, 3411, + 0, 0, 3420, 0, 0, 3434, 3438, 3458, 3443, 3460, + 3454, 0, 0, 3472, 3458, 3489, 3478, 3485, 0, 3510, + 3512, 3519, 0, 3530, 3550, 3567, 3575, 0, 3597, 3607, + 3640, 3624, 3639, 3640, 3660, 3662, 3663, 0, 3694, 3704, + 3707, 0, 3695, 3717, 3718, 0, 0, 536, 5622, 5625, + + 5633, 5636, 5676, 5684, 5685, 5710, 5738, 5729, 5764, 5763, + 5764, 5792, 5814, 5816, 5808, 5828, 5846, 5864, 5862, 5882, + 5890, 5912, 5920, 5919, 5944, 5946, 5968, 5970, 5994, 5999, + 6019, 6022, 6024, 6048, 6060, 6063, 6089, 6067, 6105, 6116, + 6108, 6146, 6149, 6152, 6160, 6190, 6203, 6201, 6232, 6245, + 6246, 6276, 6287, 6290, 6315, 6320, 6334, 6358, 6376, 6367, + 6407, 6411, 6419, 6434, 6459, 6460, 6488, 6489, 6513, 6514, + 6527, 6539, 6542, 6567, 6581, 6568, 6593, 6596, 6622, 6635, + 6627, 6667, 6670, 6691, 6719, 6683, 6727, 6739, 6752, 6744, + 6780, 6778, 6799, 6825, 6822, 6843, 526, 3718, 0, 3748, + + 0, 3753, 3765, 3751, 3753, 0, 3765, 0, 3790, 3801, + 3812, 3805, 3799, 0, 3822, 0, 3822, 0, 3819, 0, + 0, 3862, 0, 3875, 3873, 3892, 3903, 0, 0, 0, + 0, 0, 0, 3903, 3930, 3942, 0, 0, 3932, 0, + 3948, 0, 3968, 0, 3972, 3992, 4001, 4031, 4018, 4032, + 0, 4044, 4049, 4061, 4077, 0, 4091, 0, 4094, 0, + 4107, 4109, 4115, 4110, 4136, 0, 0, 0, 0, 4134, + 4144, 525, 6860, 6865, 6867, 6881, 6897, 6910, 6919, 6935, + 6944, 6953, 6977, 6986, 6995, 7026, 7030, 7039, 7070, 7081, + 7084, 7112, 7125, 7126, 7156, 7167, 7169, 7178, 7203, 7212, + + 7214, 7221, 7256, 7257, 7265, 7298, 7301, 7307, 7342, 7350, + 7369, 7364, 7394, 7396, 7410, 7419, 7438, 7452, 7471, 7480, + 7500, 7509, 7524, 7538, 7516, 7559, 7565, 7589, 7603, 7612, + 7631, 7645, 7654, 7673, 7687, 7701, 7720, 7743, 7744, 7774, + 7785, 7788, 7804, 7818, 7834, 7837, 529, 0, 0, 0, + 0, 4157, 0, 0, 436, 4161, 4177, 0, 0, 4177, + 4196, 4219, 0, 0, 0, 4258, 0, 0, 4276, 4280, + 0, 0, 4284, 4299, 4293, 4301, 0, 0, 4319, 4304, + 4316, 0, 0, 4320, 0, 4325, 4333, 4341, 4361, 4364, + 0, 0, 527, 7848, 7872, 7878, 7881, 7901, 7916, 7925, + + 7955, 7940, 7970, 7969, 7984, 7999, 8008, 8038, 8033, 8052, + 8074, 8013, 8054, 8084, 8108, 8095, 8131, 8139, 8150, 8151, + 8156, 8185, 8188, 8199, 8218, 8232, 8251, 8262, 8281, 8292, + 8295, 8311, 8335, 8341, 8358, 8380, 8388, 8393, 526, 4361, + 4434, 0, 4360, 0, 0, 0, 4377, 4374, 0, 0, + 4384, 4398, 4412, 4415, 0, 0, 0, 4405, 4419, 4429, + 0, 4436, 524, 8418, 4781, 8406, 8432, 8444, 8446, 8468, + 8480, 8498, 8506, 8524, 8546, 8551, 8555, 8568, 8590, 8598, + 8603, 8612, 8642, 8644, 8647, 8656, 514, 438, 4433, 4446, + 0, 0, 4434, 0, 0, 4469, 0, 0, 4477, 0, + + 506, 8710, 4493, 8688, 8696, 8697, 8731, 8739, 8742, 8745, + 8775, 8783, 8795, 8800, 470, 4558, 4499, 0, 0, 0, + 4522, 468, 4698, 4536, 8803, 8808, 8844, 8842, 465, 4563, + 8955, 0, 418, 4565, 0, 8851, 418, 4572, 390, 4578, + 388, 4583, 386, 4591, 347, 4609, 343, 4617, 338, 4628, + 335, 4636, 334, 4653, 332, 4679, 303, 8955, 293, 0, + 299, 286, 248, 243, 8955, 0, 8955, 8924, 8929, 201, + 8934, 8939, 8944, 8949 } ; -static const flex_int16_t yy_def[1397] = +static const flex_int16_t yy_def[1375] = { 0, - 1389, 1, 1390, 1390, 1389, 5, 1389, 1389, 1389, 1389, - 1389, 1391, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1389, 1393, 1389, 1394, 1394, - 1389, 1394, 1395, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1396, 1396, 63, 63, 63, 64, 66, 63, 66, - 63, 63, 63, 63, 64, 64, 64, 64, 63, 63, - 63, 66, 63, 63, 63, 63, 1394, 1389, 1389, 1391, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1389, 1393, 1389, 1394, - 1394, 1394, 1395, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - - 1394, 1394, 63, 63, 63, 66, 66, 66, 66, 66, - 66, 63, 63, 66, 66, 66, 63, 63, 63, 66, - 66, 66, 63, 66, 66, 66, 63, 66, 66, 63, - 66, 63, 66, 63, 63, 66, 66, 66, 66, 63, - 63, 66, 66, 63, 63, 63, 63, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, - 63, 63, 63, 63, 66, 66, 66, 66, 66, 66, - 63, 63, 63, 63, 63, 63, 66, 63, 63, 63, - 64, 63, 63, 63, 66, 63, 63, 63, 63, 1394, - 1389, 1389, 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, - 1394, 1394, 63, 63, 63, 63, 66, 66, 66, 66, - 63, 63, 63, 63, 66, 66, 63, 63, 63, 63, - 63, 63, 63, 66, 66, 63, 66, 66, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 66, 66, 66, 66, 63, 63, 66, 63, - 63, 66, 66, 66, 66, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 66, 66, 66, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, - - 66, 66, 63, 63, 63, 63, 66, 66, 66, 66, - 66, 66, 63, 63, 63, 63, 66, 66, 63, 63, - 63, 63, 63, 63, 63, 66, 66, 66, 66, 66, - 66, 66, 63, 63, 66, 66, 63, 63, 63, 63, - 66, 66, 66, 66, 66, 66, 66, 66, 1389, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, 66, - 66, 63, 63, 63, 66, 63, 66, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 66, 63, - - 63, 63, 66, 66, 66, 66, 66, 66, 66, 66, - 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 66, 66, 66, 63, 63, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, - 63, 63, 66, 66, 66, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 66, 66, - 63, 63, 63, 66, 63, 63, 63, 63, 63, 63, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 63, 63, 63, 63, 63, 63, 63, 66, 1389, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, - 66, 66, 66, 66, 63, 63, 63, 63, 63, 63, - 63, 66, 66, 63, 63, 63, 66, 63, 63, 63, - 66, 63, 63, 63, 63, 63, 66, 63, 63, 63, - 63, 63, 66, 63, 63, 63, 63, 63, 63, 63, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 63, - 66, 66, 66, 66, 66, 66, 66, 63, 66, 66, - 66, 66, 66, 66, 66, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 66, 66, 66, 66, 66, 66, - - 66, 63, 63, 63, 63, 66, 66, 66, 66, 66, - 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1394, 63, 63, 66, - 66, 66, 63, 63, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 63, 63, 66, 66, 63, 66, 66, 66, - 66, 66, 66, 66, 66, 63, 63, 63, 63, 66, - 66, 66, 66, 66, 66, 66, 63, 63, 63, 63, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 1389, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, - 66, 66, 66, 66, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, - 66, 66, 66, 66, 66, 66, 66, 63, 63, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 63, 63, 63, 63, 1389, 1392, 1389, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1394, 63, 1394, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 66, 66, 63, 63, 63, - - 63, 63, 63, 63, 63, 63, 1389, 1392, 1389, 1392, - 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1394, 63, 1394, 63, 63, 63, 63, 66, 66, - 66, 66, 66, 66, 63, 63, 1389, 1389, 1389, 1392, - 1392, 1392, 1392, 1394, 1394, 1394, 63, 63, 63, 66, - 1389, 1389, 1389, 1392, 1394, 1394, 1394, 66, 1389, 1389, - 1394, 1394, 1389, 1389, 1394, 1394, 1389, 1389, 1394, 1394, - 1389, 1389, 1394, 1394, 1389, 1389, 1394, 1394, 1389, 1389, - 1394, 1394, 1389, 1394, 1389, 1394, 1389, 1394, 0, 1389, - 1389, 1389, 1389, 1389, 1389, 1389 - + 1367, 1, 1368, 1368, 1367, 5, 1367, 1367, 1367, 1367, + 1367, 1369, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1367, + 1372, 1373, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1374, 1374, 62, 62, 62, 63, 65, 62, 65, 62, + 62, 62, 62, 63, 63, 63, 62, 62, 62, 62, + 65, 62, 62, 62, 1372, 1367, 1367, 1369, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1372, 1373, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 62, + + 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, + 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, + 65, 65, 65, 62, 65, 65, 62, 65, 62, 65, + 62, 62, 65, 65, 65, 65, 62, 62, 65, 65, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 62, 62, 65, 62, 62, 62, 63, 62, 62, 62, + 65, 62, 62, 62, 62, 1372, 1367, 1367, 1367, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1372, 1372, 1372, 62, 62, 62, + 62, 65, 65, 65, 65, 62, 62, 62, 62, 65, + 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 65, 62, 62, 65, 62, 62, 65, 65, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, + + 62, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, + 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 65, 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1372, 65, 65, 62, 62, 62, 65, 62, 65, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, + + 65, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 65, 65, 65, 62, 62, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 62, 62, 62, 65, 65, 65, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 65, 1367, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1372, 65, 65, + + 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, + 65, 62, 62, 62, 65, 62, 62, 62, 65, 62, + 62, 62, 62, 65, 62, 62, 62, 62, 62, 65, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 62, 65, 65, 65, + 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, + 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1372, 62, 62, 65, 65, 65, 62, 62, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, + + 62, 65, 65, 65, 65, 65, 65, 65, 65, 62, + 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1372, 65, 65, 65, 65, 62, 62, 62, + + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 65, 65, 65, 62, + 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 62, 62, 62, 62, 1367, 1370, + 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1372, 62, 1372, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 1367, 1370, 1367, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1372, 62, 1372, 62, 62, 62, 65, 65, 65, 65, + 65, 65, 62, 62, 1367, 1367, 1367, 1370, 1370, 1370, + 1370, 1372, 1372, 1372, 62, 62, 62, 65, 1367, 1367, + 1367, 1370, 1372, 1372, 1372, 65, 1367, 1367, 1372, 1372, + 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, + 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, + 1367, 1372, 1367, 1372, 1367, 1372, 0, 1367, 1367, 1367, + 1367, 1367, 1367, 1367 } ; -static const flex_int16_t yy_nxt[9157] = +static const flex_int16_t yy_nxt[9032] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 44, 8, 21, + 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 44, 46, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 59, 60, 61, 62, 63, - - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 85, 49, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 85, 87, 88, 88, 88, 88, 91, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 92, 94, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, - 97, 101, 107, 102, 131, 133, 108, 111, 141, 103, - 132, 104, 109, 134, 112, 105, 106, 142, 161, 135, - - 186, 113, 110, 100, 114, 191, 88, 115, 101, 107, - 102, 131, 133, 108, 111, 141, 103, 132, 104, 109, - 134, 112, 105, 106, 142, 161, 135, 186, 113, 110, - 182, 114, 116, 1388, 115, 121, 117, 122, 183, 194, - 118, 143, 123, 294, 146, 144, 119, 124, 147, 120, - 195, 145, 88, 88, 148, 184, 185, 182, 1387, 116, - 199, 200, 121, 117, 122, 183, 149, 118, 143, 123, - 294, 146, 144, 119, 124, 147, 120, 125, 145, 158, - 150, 148, 184, 185, 295, 126, 151, 152, 127, 300, - 159, 128, 136, 149, 129, 1386, 160, 130, 137, 138, - - 139, 88, 88, 1385, 125, 140, 158, 150, 191, 88, - 1384, 295, 126, 151, 152, 127, 300, 159, 128, 136, - 1383, 129, 153, 160, 130, 137, 138, 139, 296, 301, - 154, 162, 140, 305, 155, 163, 297, 156, 157, 164, - 298, 306, 179, 299, 180, 165, 1381, 181, 1379, 153, - 1259, 1259, 309, 316, 1377, 296, 301, 154, 162, 1375, - 305, 155, 163, 297, 156, 157, 164, 298, 306, 179, - 299, 180, 165, 166, 181, 167, 1373, 307, 168, 309, - 316, 169, 1371, 170, 308, 171, 172, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 1369, 317, 314, - - 166, 1367, 167, 318, 307, 168, 302, 303, 169, 315, - 170, 308, 171, 172, 173, 324, 325, 234, 174, 203, - 304, 175, 176, 235, 203, 317, 314, 326, 177, 203, - 318, 178, 1365, 302, 303, 1363, 315, 1338, 1338, 1361, - 1359, 173, 324, 325, 234, 174, 203, 304, 175, 176, - 235, 203, 327, 1355, 326, 177, 203, 1351, 178, 197, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 190, 190, 328, 190, 190, 190, 190, 190, 190, 327, - 236, 331, 1344, 1337, 203, 1322, 329, 330, 237, 190, - 190, 190, 203, 337, 238, 204, 203, 205, 338, 328, - - 339, 1307, 244, 206, 203, 207, 342, 236, 331, 208, - 209, 203, 203, 329, 330, 237, 343, 344, 1282, 203, - 337, 238, 204, 203, 205, 338, 1257, 339, 340, 244, - 206, 203, 207, 342, 341, 1210, 208, 209, 1163, 203, - 1087, 1011, 910, 343, 344, 190, 190, 190, 345, 190, - 190, 190, 190, 190, 190, 340, 809, 348, 245, 246, - 249, 341, 203, 247, 250, 190, 190, 190, 203, 248, - 251, 346, 210, 203, 347, 345, 211, 203, 203, 203, - 203, 349, 212, 203, 348, 245, 246, 249, 350, 203, - 247, 250, 213, 203, 679, 203, 248, 251, 346, 210, - - 203, 347, 549, 211, 203, 203, 203, 203, 349, 212, - 203, 203, 421, 203, 351, 350, 287, 288, 203, 213, - 203, 190, 214, 203, 356, 203, 203, 357, 203, 215, - 203, 264, 358, 203, 359, 360, 216, 361, 203, 217, - 203, 351, 218, 287, 288, 203, 203, 420, 365, 214, - 203, 356, 203, 203, 357, 203, 215, 203, 264, 358, - 203, 359, 360, 216, 361, 366, 217, 292, 367, 218, - 368, 291, 265, 203, 219, 365, 266, 203, 220, 282, - 267, 283, 221, 290, 284, 371, 268, 372, 222, 203, - 289, 223, 366, 202, 203, 367, 203, 368, 203, 265, - - 203, 219, 201, 266, 203, 220, 282, 267, 283, 221, - 203, 284, 371, 268, 372, 222, 203, 289, 223, 190, - 285, 203, 192, 203, 203, 203, 203, 203, 286, 362, - 203, 363, 373, 224, 203, 225, 203, 203, 369, 374, - 226, 370, 364, 375, 203, 227, 203, 285, 310, 311, - 312, 203, 313, 203, 189, 286, 362, 203, 363, 373, - 224, 203, 225, 203, 187, 369, 374, 226, 370, 364, - 375, 203, 227, 203, 228, 310, 311, 312, 319, 313, - 320, 203, 229, 321, 376, 230, 377, 378, 231, 322, - 381, 232, 382, 379, 233, 99, 323, 380, 98, 387, - - 89, 228, 1389, 48, 48, 319, 1389, 320, 203, 229, - 321, 376, 230, 377, 378, 231, 322, 381, 232, 382, - 379, 233, 239, 323, 380, 332, 387, 333, 240, 241, - 242, 334, 383, 388, 390, 243, 1389, 384, 335, 394, - 203, 1389, 336, 396, 389, 385, 1389, 1389, 1389, 239, - 386, 1389, 332, 395, 333, 240, 241, 242, 334, 383, - 388, 390, 243, 352, 384, 335, 394, 203, 252, 336, - 396, 389, 385, 353, 391, 203, 397, 386, 354, 355, - 395, 398, 253, 392, 399, 203, 400, 401, 254, 255, - 352, 393, 403, 404, 405, 252, 1389, 1389, 402, 1389, - - 353, 391, 203, 397, 1389, 354, 355, 1389, 398, 253, - 392, 399, 203, 400, 401, 254, 255, 203, 393, 403, - 404, 405, 256, 406, 203, 402, 408, 411, 412, 413, - 257, 203, 415, 409, 258, 414, 410, 259, 260, 1389, - 417, 418, 419, 407, 203, 416, 1389, 550, 1389, 256, - 406, 203, 551, 408, 411, 412, 413, 257, 203, 415, - 409, 258, 414, 410, 259, 260, 261, 417, 418, 419, - 407, 203, 416, 203, 550, 203, 552, 262, 553, 551, - 203, 203, 554, 263, 555, 430, 203, 1389, 556, 1389, - 557, 203, 1389, 261, 203, 1389, 203, 1389, 203, 1389, - - 203, 203, 203, 552, 262, 553, 203, 203, 203, 554, - 263, 555, 430, 203, 269, 556, 270, 557, 203, 271, - 203, 203, 272, 203, 273, 558, 274, 275, 203, 423, - 203, 559, 1389, 203, 203, 563, 203, 1389, 1389, 564, - 203, 269, 565, 270, 1389, 1389, 271, 203, 1389, 272, - 203, 273, 558, 274, 275, 203, 423, 203, 559, 203, - 566, 203, 563, 203, 276, 203, 564, 203, 277, 565, - 424, 278, 279, 567, 568, 203, 569, 203, 280, 570, - 571, 281, 203, 572, 573, 574, 203, 566, 203, 1389, - 1389, 276, 203, 1389, 1389, 277, 1389, 424, 278, 279, - - 567, 568, 203, 569, 1389, 280, 570, 571, 281, 1389, - 572, 573, 574, 1389, 1389, 203, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 94, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 422, 422, 422, - 422, 422, 422, 422, 422, 422, 422, 197, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 425, 575, - 203, 203, 579, 203, 580, 203, 426, 429, 203, 581, - 203, 1389, 582, 203, 293, 293, 293, 293, 293, 293, - - 293, 293, 293, 293, 1389, 425, 575, 203, 203, 579, - 203, 580, 203, 426, 429, 203, 581, 203, 427, 582, - 203, 428, 1389, 434, 583, 1389, 584, 1389, 203, 203, - 203, 203, 535, 585, 203, 203, 203, 586, 203, 203, - 203, 203, 1389, 1389, 435, 427, 203, 1389, 428, 203, - 434, 583, 536, 584, 203, 203, 203, 203, 203, 535, - 585, 203, 203, 203, 586, 203, 203, 203, 203, 431, - 432, 435, 587, 203, 203, 203, 203, 203, 203, 536, - 588, 203, 203, 433, 203, 1389, 436, 203, 203, 589, - 1389, 1389, 1389, 437, 203, 590, 431, 432, 203, 587, - - 591, 203, 203, 592, 203, 203, 438, 588, 443, 203, - 433, 203, 203, 436, 203, 203, 589, 203, 444, 203, - 437, 203, 590, 1389, 203, 203, 593, 591, 203, 203, - 592, 1389, 1389, 438, 1389, 443, 1389, 1389, 594, 203, - 595, 1389, 1389, 1389, 203, 444, 203, 1389, 1389, 598, - 203, 203, 1389, 593, 203, 203, 203, 439, 440, 441, - 203, 442, 1389, 445, 203, 594, 203, 595, 203, 203, - 203, 599, 1389, 203, 596, 455, 598, 203, 203, 203, - 600, 203, 597, 203, 439, 440, 441, 203, 442, 203, - 445, 203, 601, 203, 446, 203, 203, 203, 599, 447, - - 203, 596, 455, 602, 603, 203, 203, 600, 1389, 597, - 203, 1389, 604, 1389, 1389, 1389, 203, 1389, 1389, 601, - 1389, 446, 605, 1389, 203, 606, 447, 448, 203, 449, - 602, 603, 450, 607, 456, 203, 608, 203, 451, 604, - 203, 453, 454, 609, 203, 452, 203, 203, 203, 605, - 203, 203, 606, 457, 448, 203, 449, 610, 203, 450, - 607, 456, 203, 608, 203, 451, 1389, 203, 453, 454, - 609, 203, 452, 203, 203, 203, 1389, 203, 1389, 1389, - 457, 613, 460, 614, 610, 203, 458, 459, 560, 1389, - 561, 203, 466, 203, 203, 203, 203, 203, 203, 203, - - 203, 615, 203, 203, 203, 562, 468, 203, 613, 460, - 614, 1389, 616, 458, 459, 560, 203, 561, 203, 466, - 203, 203, 203, 203, 203, 203, 203, 203, 615, 203, - 203, 203, 562, 468, 203, 461, 611, 462, 467, 616, - 203, 463, 617, 203, 618, 203, 612, 203, 464, 469, - 203, 203, 465, 621, 1389, 470, 203, 203, 1389, 1389, - 1389, 203, 461, 611, 462, 467, 622, 203, 463, 617, - 1389, 618, 203, 612, 203, 464, 469, 203, 203, 465, - 621, 203, 470, 203, 203, 203, 203, 472, 203, 203, - 203, 471, 623, 622, 203, 203, 473, 203, 624, 203, - - 203, 203, 475, 625, 203, 476, 203, 203, 203, 1389, - 474, 1389, 203, 203, 472, 1389, 203, 203, 471, 623, - 203, 203, 203, 473, 203, 624, 203, 203, 203, 475, - 625, 203, 476, 203, 203, 1389, 203, 474, 477, 626, - 627, 628, 203, 203, 203, 629, 630, 203, 203, 203, - 203, 478, 203, 631, 203, 1389, 1389, 203, 632, 1389, - 1389, 1389, 203, 203, 619, 477, 626, 627, 628, 203, - 203, 203, 629, 630, 620, 203, 203, 203, 478, 203, - 631, 203, 203, 203, 203, 632, 479, 203, 203, 203, - 485, 619, 203, 203, 480, 203, 635, 638, 639, 633, - - 203, 620, 203, 203, 1389, 1389, 1389, 640, 641, 203, - 203, 1389, 1389, 479, 203, 203, 1389, 485, 634, 203, - 203, 480, 203, 635, 638, 639, 633, 203, 203, 203, - 203, 481, 486, 203, 640, 641, 636, 203, 203, 203, - 642, 482, 643, 203, 644, 634, 483, 484, 203, 637, - 203, 203, 203, 487, 1389, 203, 494, 203, 481, 486, - 203, 1389, 203, 636, 203, 203, 203, 642, 482, 643, - 203, 644, 1389, 483, 484, 203, 637, 203, 203, 203, - 487, 203, 488, 494, 203, 203, 203, 645, 495, 203, - 646, 203, 203, 203, 496, 647, 576, 648, 203, 203, - - 577, 203, 1389, 649, 203, 650, 1389, 1389, 203, 488, - 1389, 578, 203, 203, 645, 495, 651, 646, 203, 203, - 203, 496, 647, 576, 648, 203, 203, 577, 203, 203, - 649, 203, 650, 203, 203, 489, 203, 490, 578, 203, - 652, 203, 497, 651, 653, 654, 203, 655, 656, 203, - 1389, 1389, 1389, 1389, 657, 1389, 203, 1389, 658, 1389, - 203, 203, 489, 203, 490, 1389, 203, 652, 203, 497, - 659, 653, 654, 203, 655, 656, 203, 491, 502, 492, - 500, 657, 203, 660, 203, 658, 203, 203, 203, 661, - 493, 203, 203, 1389, 662, 203, 203, 659, 1389, 665, - - 203, 1389, 668, 1389, 491, 502, 492, 500, 1389, 203, - 660, 203, 1389, 203, 203, 203, 661, 493, 203, 203, - 501, 662, 203, 203, 1389, 663, 665, 203, 203, 668, - 203, 203, 669, 203, 664, 203, 498, 1389, 203, 499, - 203, 670, 203, 203, 203, 1389, 671, 501, 1389, 203, - 1389, 666, 663, 667, 203, 203, 1389, 203, 203, 669, - 203, 664, 203, 498, 503, 203, 499, 203, 670, 203, - 203, 203, 203, 671, 203, 203, 203, 203, 666, 203, - 667, 203, 203, 504, 203, 505, 1389, 203, 672, 203, - 1389, 503, 673, 674, 1389, 203, 1389, 1389, 1389, 203, - - 1389, 203, 203, 677, 203, 203, 203, 1389, 1389, 203, - 504, 203, 505, 203, 203, 672, 203, 203, 1389, 673, - 674, 507, 203, 203, 675, 203, 506, 508, 676, 203, - 677, 509, 203, 203, 203, 203, 511, 203, 678, 203, - 203, 203, 810, 203, 203, 203, 203, 203, 507, 510, - 203, 675, 203, 506, 508, 676, 203, 1389, 509, 203, - 203, 203, 203, 511, 203, 678, 203, 1389, 203, 810, - 203, 1389, 203, 203, 203, 1389, 510, 516, 1389, 1389, - 1389, 203, 203, 1389, 203, 525, 203, 512, 811, 203, - 812, 203, 513, 813, 203, 517, 814, 203, 203, 815, - - 514, 203, 203, 816, 516, 515, 518, 203, 203, 203, - 203, 203, 525, 1389, 512, 811, 203, 812, 203, 513, - 813, 203, 517, 814, 203, 203, 815, 514, 203, 203, - 816, 817, 515, 518, 203, 519, 523, 203, 1389, 203, - 203, 203, 529, 818, 203, 203, 203, 819, 820, 203, - 524, 203, 1389, 821, 822, 203, 823, 824, 817, 825, - 203, 1389, 519, 523, 826, 203, 203, 203, 203, 529, - 818, 203, 203, 203, 819, 820, 203, 524, 203, 520, - 821, 822, 203, 823, 824, 526, 825, 203, 521, 203, - 203, 826, 203, 203, 203, 203, 522, 1389, 203, 203, - - 203, 1389, 827, 828, 203, 1389, 520, 527, 829, 203, - 830, 1389, 526, 831, 203, 521, 203, 203, 832, 1389, - 203, 203, 203, 522, 528, 203, 203, 203, 203, 827, - 828, 203, 203, 833, 527, 829, 203, 830, 203, 1389, - 831, 203, 203, 530, 203, 832, 532, 1389, 203, 203, - 203, 528, 834, 835, 531, 203, 203, 1389, 836, 203, - 833, 1389, 1389, 1389, 203, 203, 203, 1389, 203, 203, - 530, 203, 533, 532, 203, 203, 203, 203, 203, 834, - 835, 531, 203, 203, 203, 836, 837, 1389, 203, 534, - 203, 203, 838, 203, 541, 203, 839, 1389, 203, 533, - - 203, 203, 1389, 540, 203, 203, 1389, 840, 203, 203, - 203, 203, 1389, 837, 203, 203, 534, 203, 1389, 838, - 841, 541, 1389, 839, 203, 203, 537, 203, 1389, 203, - 540, 203, 842, 538, 840, 203, 539, 203, 542, 203, - 203, 203, 544, 843, 543, 203, 203, 841, 844, 203, - 203, 203, 203, 537, 546, 545, 203, 1389, 203, 842, - 538, 1389, 203, 539, 203, 542, 203, 203, 1389, 544, - 843, 543, 203, 203, 203, 844, 203, 203, 845, 203, - 203, 546, 545, 203, 203, 203, 846, 203, 548, 203, - 203, 203, 203, 203, 847, 547, 203, 682, 848, 203, - - 203, 203, 203, 203, 203, 845, 849, 203, 850, 203, - 203, 203, 203, 846, 203, 548, 1389, 203, 1389, 203, - 203, 847, 547, 203, 682, 848, 203, 203, 1389, 203, - 203, 203, 1389, 849, 1389, 850, 203, 1389, 851, 203, - 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, - 680, 203, 681, 1389, 203, 203, 203, 203, 1389, 203, - 203, 203, 203, 1389, 203, 851, 852, 853, 854, 203, - 203, 203, 203, 203, 1389, 203, 1389, 680, 203, 681, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 683, 203, 1389, 852, 853, 854, 203, 203, 203, 203, - - 203, 203, 203, 203, 855, 203, 203, 203, 203, 203, - 685, 856, 203, 203, 1389, 684, 203, 683, 1389, 203, - 857, 858, 861, 687, 1389, 203, 203, 862, 203, 203, - 203, 855, 203, 203, 1389, 203, 203, 685, 856, 203, - 203, 203, 684, 203, 863, 203, 203, 857, 858, 861, - 687, 203, 203, 203, 862, 688, 203, 203, 689, 686, - 203, 203, 203, 864, 1389, 203, 203, 203, 203, 865, - 203, 863, 203, 1389, 1389, 868, 1389, 1389, 203, 869, - 1389, 870, 688, 1389, 203, 689, 686, 203, 203, 203, - 864, 203, 203, 1389, 203, 203, 865, 203, 690, 203, - - 691, 203, 868, 203, 203, 859, 869, 694, 870, 203, - 203, 203, 693, 203, 1389, 692, 860, 203, 203, 203, - 203, 695, 203, 203, 1389, 690, 203, 691, 203, 1389, - 203, 203, 859, 203, 694, 871, 203, 203, 203, 693, - 203, 203, 692, 860, 203, 203, 203, 203, 695, 203, - 203, 203, 872, 203, 866, 867, 696, 873, 874, 203, - 203, 203, 871, 698, 875, 876, 1389, 203, 203, 697, - 877, 203, 203, 1389, 1389, 878, 203, 203, 203, 872, - 203, 866, 867, 696, 873, 874, 203, 203, 203, 1389, - 698, 875, 876, 203, 203, 203, 697, 877, 203, 1389, - - 699, 203, 878, 203, 203, 203, 701, 700, 203, 879, - 203, 203, 880, 203, 203, 704, 203, 203, 1389, 203, - 203, 203, 203, 1389, 702, 1389, 203, 699, 203, 203, - 203, 203, 203, 701, 700, 203, 879, 203, 203, 880, - 203, 881, 704, 203, 203, 703, 203, 203, 203, 1389, - 706, 702, 203, 203, 707, 1389, 203, 203, 203, 705, - 203, 1389, 882, 203, 1389, 708, 883, 203, 881, 884, - 203, 1389, 703, 203, 203, 885, 709, 706, 203, 203, - 886, 707, 203, 203, 203, 887, 705, 203, 203, 882, - 203, 710, 708, 883, 203, 203, 884, 203, 203, 1389, - - 203, 203, 885, 709, 203, 203, 1389, 886, 203, 203, - 203, 203, 887, 712, 203, 203, 203, 1389, 710, 711, - 203, 1389, 203, 888, 203, 203, 203, 1389, 203, 714, - 1389, 203, 889, 203, 1389, 203, 203, 1389, 203, 203, - 712, 203, 890, 203, 203, 891, 711, 203, 203, 203, - 888, 203, 1389, 203, 203, 713, 714, 203, 203, 889, - 203, 203, 203, 203, 203, 892, 203, 715, 203, 890, - 717, 203, 891, 893, 203, 203, 203, 203, 203, 716, - 203, 203, 713, 203, 203, 203, 894, 203, 203, 203, - 203, 203, 892, 203, 715, 203, 718, 717, 203, 895, - - 893, 203, 203, 203, 203, 203, 716, 203, 203, 203, - 203, 203, 1389, 894, 203, 1389, 719, 203, 203, 1389, - 203, 203, 896, 718, 1389, 203, 895, 1389, 897, 203, - 203, 1389, 720, 1389, 203, 203, 203, 898, 203, 203, - 203, 1389, 203, 719, 203, 203, 721, 203, 203, 896, - 723, 203, 203, 203, 203, 897, 899, 1389, 722, 720, - 203, 203, 900, 203, 898, 1389, 203, 203, 724, 203, - 203, 203, 203, 721, 203, 1389, 203, 723, 203, 203, - 203, 203, 203, 899, 725, 722, 203, 203, 901, 900, - 203, 203, 203, 1389, 726, 724, 203, 203, 203, 203, - - 902, 1389, 727, 203, 203, 1389, 1389, 1389, 903, 203, - 904, 725, 203, 203, 203, 901, 203, 1389, 203, 203, - 728, 726, 203, 203, 1389, 203, 729, 902, 203, 727, - 905, 203, 203, 203, 730, 903, 906, 904, 203, 203, - 1389, 203, 1389, 203, 203, 1389, 203, 728, 1389, 203, - 907, 203, 1389, 729, 908, 203, 203, 905, 909, 203, - 203, 730, 203, 906, 732, 203, 733, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 731, 907, 203, 203, - 203, 908, 203, 203, 1012, 909, 1389, 1013, 1389, 203, - 1389, 732, 1389, 733, 203, 203, 203, 203, 1014, 203, - - 203, 203, 203, 731, 203, 1015, 203, 203, 203, 203, - 203, 1012, 203, 203, 1013, 734, 1016, 203, 203, 736, - 203, 735, 1389, 203, 1017, 1014, 1389, 203, 203, 1389, - 1389, 203, 1015, 203, 1389, 203, 1018, 203, 1019, 203, - 203, 1020, 734, 1016, 203, 203, 736, 203, 735, 203, - 203, 1017, 738, 203, 739, 203, 203, 740, 203, 737, - 203, 203, 203, 1018, 203, 1019, 1389, 203, 1020, 203, - 1389, 1389, 203, 1021, 203, 1389, 203, 203, 1389, 738, - 203, 739, 1389, 203, 740, 203, 737, 1389, 203, 203, - 1389, 203, 1022, 741, 203, 1023, 203, 203, 203, 203, - - 1021, 203, 203, 742, 203, 203, 1024, 744, 203, 203, - 1025, 203, 203, 203, 743, 1389, 203, 203, 203, 1022, - 741, 203, 1023, 1026, 203, 203, 1027, 1389, 1389, 203, - 742, 1028, 203, 1024, 744, 203, 203, 1025, 203, 203, - 203, 743, 746, 203, 203, 203, 203, 203, 203, 203, - 1026, 1029, 203, 1027, 203, 745, 1389, 203, 1028, 203, - 1389, 747, 203, 1389, 1389, 1030, 1389, 203, 1389, 746, - 1031, 1032, 1033, 203, 203, 1034, 203, 203, 1029, 203, - 1389, 203, 745, 203, 203, 751, 203, 203, 747, 203, - 748, 203, 1030, 203, 203, 203, 1035, 1031, 1032, 1033, - - 1036, 203, 1034, 203, 203, 203, 1037, 752, 1389, 203, - 203, 203, 751, 1389, 203, 203, 1389, 748, 203, 1389, - 203, 1038, 203, 1035, 1389, 203, 1389, 1036, 203, 1389, - 203, 203, 203, 1037, 752, 203, 203, 1039, 203, 749, - 203, 203, 203, 203, 203, 1040, 754, 203, 1038, 750, - 203, 203, 203, 203, 1389, 1041, 753, 1389, 203, 1042, - 203, 1389, 203, 203, 1039, 203, 749, 203, 203, 203, - 203, 203, 1040, 754, 203, 203, 750, 203, 203, 1043, - 203, 755, 1041, 753, 203, 203, 1042, 203, 203, 756, - 203, 1044, 203, 203, 203, 1045, 203, 203, 757, 1046, - - 203, 1047, 203, 203, 203, 203, 1043, 1048, 755, 1389, - 203, 203, 203, 203, 1389, 203, 756, 1049, 1044, 1389, - 203, 203, 1045, 1052, 203, 757, 1046, 203, 1047, 1389, - 203, 203, 203, 1053, 1048, 1389, 203, 203, 203, 203, - 203, 203, 758, 203, 1049, 1389, 759, 1389, 203, 1054, - 1052, 203, 760, 1389, 761, 1055, 203, 1056, 203, 1057, - 1053, 1058, 203, 203, 203, 203, 203, 203, 203, 758, - 203, 203, 203, 759, 203, 203, 1054, 203, 203, 760, - 762, 761, 1055, 203, 1056, 203, 1057, 203, 1058, 203, - 1059, 203, 1389, 203, 203, 765, 1389, 1060, 203, 203, - - 203, 203, 1389, 1061, 203, 203, 771, 762, 203, 203, - 768, 203, 1389, 203, 203, 763, 203, 1059, 203, 203, - 203, 203, 765, 203, 1060, 1389, 1062, 203, 1063, 203, - 1061, 1389, 203, 771, 764, 203, 203, 768, 203, 203, - 203, 1050, 763, 203, 1051, 203, 203, 1064, 203, 1389, - 203, 1389, 203, 1062, 203, 1063, 203, 1065, 770, 203, - 769, 764, 1389, 203, 203, 203, 203, 766, 1050, 1066, - 203, 1051, 1389, 1389, 1064, 203, 203, 1389, 203, 203, - 767, 203, 1389, 203, 1065, 770, 203, 769, 203, 772, - 203, 203, 203, 203, 766, 1067, 1066, 203, 1068, 203, - - 773, 1389, 203, 203, 203, 203, 1389, 767, 203, 203, - 203, 1069, 1389, 203, 203, 203, 772, 203, 1389, 1389, - 203, 1389, 1067, 203, 203, 1068, 203, 773, 774, 1070, - 1389, 203, 1389, 203, 1389, 203, 203, 1071, 1069, 203, - 203, 203, 775, 203, 203, 776, 203, 203, 203, 203, - 203, 203, 203, 777, 1389, 774, 1070, 203, 203, 203, - 203, 778, 1072, 1073, 1071, 203, 203, 1074, 1389, 775, - 203, 203, 776, 203, 203, 203, 203, 1075, 1076, 203, - 777, 203, 1077, 203, 203, 203, 203, 203, 778, 1072, - 1073, 780, 203, 779, 1074, 203, 203, 1078, 203, 1079, - - 203, 203, 1080, 203, 1075, 1076, 203, 1389, 203, 1077, - 203, 203, 1389, 1389, 203, 1389, 203, 1389, 780, 1389, - 779, 203, 203, 203, 1078, 203, 1079, 203, 203, 1080, - 203, 203, 1081, 203, 781, 203, 203, 1082, 203, 203, - 203, 203, 784, 203, 203, 203, 203, 783, 203, 203, - 1389, 1083, 203, 782, 203, 203, 203, 1389, 203, 1081, - 1084, 781, 203, 203, 1082, 1389, 203, 203, 203, 784, - 1389, 203, 203, 203, 783, 1389, 203, 203, 1083, 203, - 782, 203, 203, 203, 203, 785, 203, 1084, 203, 203, - 787, 1085, 203, 203, 786, 1086, 1164, 203, 203, 1389, - - 1165, 1389, 203, 1389, 203, 1389, 203, 1389, 1389, 1166, - 1389, 203, 785, 203, 1167, 203, 203, 787, 1085, 203, - 203, 786, 1086, 1164, 203, 203, 203, 1165, 203, 203, - 788, 1389, 203, 203, 203, 203, 1166, 790, 203, 203, - 789, 1167, 203, 1168, 203, 1389, 1169, 203, 791, 1389, - 1389, 1170, 203, 203, 1389, 203, 1389, 788, 203, 203, - 203, 203, 203, 1171, 790, 203, 203, 789, 203, 203, - 1168, 203, 203, 1169, 203, 791, 203, 793, 1170, 203, - 1389, 203, 203, 792, 203, 203, 794, 1389, 203, 1172, - 1171, 203, 203, 203, 1173, 203, 203, 203, 1389, 203, - - 1389, 203, 203, 203, 793, 1389, 203, 795, 203, 203, - 792, 203, 796, 794, 797, 203, 1172, 203, 203, 203, - 203, 1173, 203, 203, 203, 203, 203, 800, 203, 203, - 203, 1389, 203, 203, 795, 1174, 798, 203, 1389, 796, - 1389, 797, 1175, 1389, 203, 1176, 203, 799, 1177, 203, - 1389, 203, 203, 203, 800, 203, 1178, 203, 203, 203, - 203, 203, 1174, 798, 203, 203, 1179, 801, 802, 1175, - 203, 203, 1176, 203, 799, 1177, 1389, 203, 203, 203, - 1389, 1389, 203, 1178, 203, 203, 1389, 203, 203, 203, - 1180, 1181, 203, 1179, 801, 802, 1182, 203, 203, 1389, - - 1389, 203, 1183, 203, 203, 1389, 203, 203, 203, 203, - 1184, 203, 803, 203, 203, 804, 203, 1180, 1181, 203, - 203, 1389, 805, 1182, 1185, 1186, 806, 203, 203, 1183, - 203, 1389, 203, 1389, 203, 203, 203, 1184, 1187, 803, - 203, 203, 804, 1188, 807, 1189, 203, 203, 203, 805, - 203, 1185, 1186, 806, 203, 203, 203, 1190, 203, 203, - 203, 1389, 808, 203, 1191, 1187, 1389, 203, 203, 203, - 1188, 807, 1189, 911, 203, 203, 1192, 203, 1193, 203, - 1389, 1389, 203, 203, 1190, 203, 203, 203, 203, 808, - 203, 1191, 912, 203, 203, 203, 203, 1389, 203, 1389, - - 911, 203, 1194, 1192, 203, 1193, 203, 203, 203, 1389, - 1195, 203, 1389, 203, 203, 203, 203, 203, 916, 912, - 203, 1389, 1196, 203, 913, 203, 203, 914, 203, 1194, - 203, 203, 1197, 1389, 203, 203, 203, 1195, 203, 915, - 1389, 203, 1198, 203, 203, 916, 203, 1389, 917, 1196, - 203, 913, 203, 203, 914, 203, 1199, 203, 203, 1197, - 203, 919, 918, 203, 1200, 203, 915, 203, 203, 1198, - 203, 203, 203, 203, 203, 917, 1201, 1389, 1389, 203, - 203, 203, 1389, 1199, 1202, 203, 1203, 203, 919, 918, - 203, 1200, 203, 1389, 203, 203, 920, 203, 203, 203, - - 203, 203, 203, 1201, 203, 203, 203, 203, 203, 203, - 203, 1202, 203, 1203, 1204, 203, 1205, 203, 1206, 1207, - 203, 1208, 203, 920, 1209, 203, 921, 203, 1389, 203, - 203, 203, 203, 203, 203, 1389, 203, 203, 1389, 203, - 203, 1204, 203, 1205, 1258, 1206, 1207, 203, 1208, 203, - 203, 1209, 203, 921, 203, 203, 203, 203, 203, 923, - 203, 203, 922, 1389, 203, 203, 203, 203, 203, 924, - 1260, 1258, 203, 1389, 203, 203, 203, 203, 203, 1389, - 927, 203, 203, 203, 203, 203, 923, 203, 203, 922, - 203, 203, 203, 203, 203, 203, 924, 1260, 203, 203, - - 203, 203, 203, 203, 203, 203, 203, 927, 203, 925, - 1261, 203, 1389, 926, 203, 203, 1262, 203, 203, 203, - 1263, 203, 203, 203, 1264, 203, 203, 203, 1389, 203, - 1389, 203, 203, 203, 928, 203, 925, 1261, 1389, 203, - 926, 203, 203, 1262, 1389, 203, 203, 1263, 1389, 203, - 203, 1264, 1265, 203, 1266, 929, 203, 203, 1267, 203, - 1268, 928, 203, 203, 930, 203, 203, 203, 1269, 203, - 203, 203, 1270, 203, 1389, 203, 1389, 1271, 203, 1265, - 931, 1266, 929, 203, 203, 1267, 1389, 1268, 1389, 203, - 203, 930, 203, 1272, 203, 1269, 1273, 203, 203, 1270, - - 203, 203, 203, 203, 1271, 203, 934, 931, 203, 932, - 203, 1274, 1275, 203, 203, 933, 203, 203, 1389, 203, - 1272, 203, 1389, 1273, 203, 203, 203, 203, 203, 203, - 203, 935, 203, 934, 1276, 203, 932, 203, 1274, 1275, - 203, 203, 933, 203, 203, 203, 203, 1389, 203, 937, - 1277, 203, 203, 203, 203, 203, 203, 936, 935, 203, - 1278, 1276, 1279, 1280, 203, 203, 203, 938, 203, 203, - 1389, 1281, 203, 203, 203, 1308, 937, 1277, 203, 203, - 1310, 1389, 203, 1389, 936, 1311, 1389, 1278, 1389, 1279, - 1280, 1389, 203, 203, 938, 203, 203, 203, 1281, 203, - - 203, 203, 1308, 939, 203, 203, 203, 1310, 203, 203, - 203, 203, 1311, 203, 1389, 203, 1389, 1312, 203, 1389, - 203, 1313, 1314, 203, 203, 1389, 203, 1389, 1389, 1389, - 939, 203, 1389, 1389, 1315, 203, 203, 203, 203, 203, - 203, 203, 203, 940, 1312, 203, 203, 203, 1313, 1314, - 203, 203, 203, 203, 203, 203, 941, 1316, 1317, 203, - 203, 1315, 942, 1389, 203, 203, 203, 1318, 203, 1389, - 940, 1389, 1319, 203, 1389, 1389, 1320, 1389, 203, 203, - 203, 203, 203, 941, 1316, 1317, 203, 203, 203, 942, - 203, 203, 203, 944, 1318, 203, 943, 1389, 946, 1319, - - 203, 945, 203, 1320, 203, 1389, 203, 1389, 203, 1389, - 1321, 203, 203, 1389, 203, 203, 203, 203, 203, 203, - 944, 1389, 203, 943, 203, 946, 1339, 203, 945, 203, - 203, 203, 203, 203, 203, 203, 203, 1321, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 947, 203, 1389, - 203, 203, 203, 1339, 948, 1389, 203, 203, 1340, 203, - 949, 203, 1341, 203, 203, 1389, 203, 203, 1389, 203, - 1342, 203, 1343, 1389, 947, 203, 203, 203, 950, 203, - 203, 948, 203, 203, 203, 1340, 203, 949, 1346, 1341, - 203, 203, 203, 203, 203, 1259, 1259, 1342, 203, 1343, - - 203, 1389, 203, 203, 203, 950, 1389, 203, 951, 203, - 1389, 203, 203, 203, 203, 1346, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 1309, 203, 951, 203, 952, 203, 203, - 953, 203, 1353, 203, 203, 203, 203, 1284, 1259, 203, - 203, 203, 1389, 203, 1389, 203, 1389, 203, 1389, 203, - 1309, 203, 1389, 203, 952, 203, 1354, 953, 203, 1353, - 203, 203, 203, 203, 203, 203, 203, 203, 955, 203, - 203, 954, 203, 203, 1357, 1324, 203, 1360, 203, 203, - 1362, 1364, 956, 1354, 1366, 203, 1368, 203, 203, 203, - - 1389, 203, 203, 203, 1389, 955, 203, 203, 954, 203, - 203, 1357, 1324, 203, 1360, 203, 203, 1362, 1364, 956, - 203, 1366, 203, 1368, 1370, 203, 203, 203, 203, 1372, - 203, 203, 957, 203, 958, 203, 1374, 959, 203, 1376, - 203, 1378, 1380, 203, 1338, 1338, 1389, 203, 1389, 203, - 1382, 1370, 1389, 1389, 203, 203, 1372, 203, 203, 957, - 203, 958, 203, 1374, 959, 203, 1376, 203, 1378, 1380, - 203, 960, 203, 962, 203, 203, 203, 1382, 203, 203, - 203, 1389, 961, 203, 203, 203, 1352, 1389, 203, 1389, - 1345, 1338, 1389, 1389, 1389, 1389, 1389, 1389, 960, 203, - - 962, 203, 203, 203, 1389, 203, 203, 203, 1389, 961, - 203, 203, 203, 1352, 203, 203, 203, 203, 203, 203, - 203, 203, 1389, 1389, 203, 203, 203, 1389, 1389, 203, - 203, 1389, 1356, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, - 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, 1356, - 203, 203, 964, 203, 203, 203, 963, 1389, 203, 203, - 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 203, 1389, 203, 203, 964, - 203, 203, 203, 963, 965, 203, 203, 203, 203, 203, - - 203, 203, 966, 203, 203, 1389, 203, 969, 203, 203, - 203, 203, 203, 203, 203, 967, 968, 1389, 203, 203, - 203, 965, 203, 203, 1389, 203, 203, 1389, 1389, 966, - 203, 203, 1389, 203, 969, 203, 203, 203, 203, 203, - 203, 203, 967, 968, 203, 203, 203, 203, 971, 203, - 203, 203, 203, 203, 203, 1389, 203, 970, 203, 1389, - 1389, 1389, 203, 203, 203, 1389, 1389, 1389, 1389, 1389, - 1389, 203, 203, 1389, 1389, 971, 1389, 1389, 203, 203, - 203, 203, 1389, 203, 970, 203, 972, 1389, 203, 203, - 203, 203, 203, 1389, 1389, 1389, 973, 203, 203, 203, - - 203, 203, 1389, 1389, 1389, 1389, 203, 203, 203, 1389, - 974, 1389, 1389, 972, 1389, 203, 203, 203, 1389, 203, - 1389, 1389, 1389, 973, 203, 203, 203, 203, 203, 1389, - 203, 1389, 1389, 203, 203, 203, 203, 974, 203, 975, - 1389, 203, 203, 203, 203, 203, 203, 1389, 203, 976, - 203, 203, 1389, 203, 977, 1389, 1389, 203, 203, 1389, - 203, 203, 1389, 203, 1389, 203, 975, 1389, 203, 203, - 203, 1389, 203, 203, 1389, 203, 976, 203, 203, 203, - 978, 977, 1389, 203, 203, 203, 1389, 203, 203, 203, - 203, 1389, 1389, 1389, 979, 1389, 1389, 203, 203, 203, - - 203, 1389, 203, 1389, 1389, 1389, 203, 978, 203, 1389, - 203, 203, 1389, 1389, 1389, 1389, 203, 203, 203, 1389, - 980, 979, 1389, 1389, 203, 203, 203, 203, 203, 203, - 1389, 1389, 981, 982, 203, 203, 203, 203, 1389, 1389, - 1389, 1389, 203, 203, 203, 203, 203, 980, 1389, 1389, - 203, 203, 203, 203, 1389, 203, 203, 1389, 1389, 981, - 982, 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, - 203, 203, 203, 203, 1389, 1389, 1389, 203, 203, 203, - 203, 983, 203, 203, 1389, 1389, 203, 203, 203, 1389, - 984, 203, 203, 203, 1389, 203, 1389, 203, 1389, 203, - - 985, 1389, 203, 1389, 1389, 203, 203, 203, 983, 203, - 203, 1389, 1389, 203, 203, 203, 203, 984, 203, 203, - 1389, 986, 1389, 1389, 203, 1389, 203, 985, 987, 203, - 1389, 203, 203, 203, 203, 203, 203, 203, 1389, 1389, - 1389, 203, 203, 203, 1389, 1389, 203, 1389, 986, 1389, - 203, 203, 203, 203, 988, 987, 203, 1389, 203, 203, - 1389, 1389, 203, 203, 1389, 1389, 203, 1389, 203, 203, - 1389, 1389, 1389, 203, 1389, 990, 1389, 203, 203, 203, - 203, 988, 989, 203, 203, 991, 203, 203, 1389, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 1389, 1389, - - 203, 1389, 990, 1389, 1389, 203, 1389, 203, 1389, 989, - 203, 203, 991, 203, 203, 1389, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 993, 992, 203, 203, 203, - 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, - 203, 1389, 1389, 994, 995, 203, 1389, 203, 203, 203, - 1389, 203, 993, 992, 203, 203, 203, 203, 1389, 203, - 203, 1389, 203, 1389, 203, 203, 203, 203, 1389, 203, - 994, 995, 203, 203, 203, 203, 203, 1389, 203, 996, - 1389, 203, 1389, 203, 203, 1389, 203, 203, 1389, 203, - 203, 203, 203, 203, 203, 1389, 203, 997, 1389, 1389, - - 203, 203, 203, 203, 1389, 203, 996, 1389, 1389, 1389, - 203, 203, 1389, 1389, 203, 1389, 203, 203, 1389, 203, - 203, 203, 1389, 1389, 997, 203, 203, 203, 203, 203, - 203, 1389, 998, 203, 1389, 999, 1389, 203, 203, 1389, - 1389, 1389, 1389, 1389, 203, 1389, 203, 1389, 1389, 1389, - 1389, 203, 203, 203, 203, 203, 203, 1389, 1389, 998, - 203, 1389, 999, 1389, 203, 203, 1389, 203, 203, 203, - 1001, 203, 1389, 203, 203, 203, 1000, 1389, 203, 203, - 203, 1389, 1389, 203, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 203, 203, 203, 1001, 1003, 1389, - - 1389, 203, 203, 1000, 1389, 1389, 203, 203, 203, 203, - 203, 203, 1389, 1389, 1389, 203, 203, 1002, 1389, 1389, - 203, 203, 203, 1389, 203, 1003, 1389, 1389, 1389, 203, - 1004, 1389, 1389, 1389, 203, 203, 203, 203, 203, 1389, - 1389, 1389, 203, 203, 1002, 1389, 1389, 203, 203, 203, - 1389, 203, 1389, 1005, 1389, 1389, 203, 1004, 203, 1006, - 203, 203, 203, 203, 203, 203, 203, 1007, 203, 203, - 203, 1389, 203, 1389, 203, 1389, 1389, 1389, 1389, 203, - 1005, 1389, 203, 1389, 203, 203, 1006, 203, 1389, 203, - 203, 203, 203, 203, 1007, 203, 203, 203, 203, 203, - - 203, 203, 203, 1009, 203, 1389, 203, 203, 203, 203, - 203, 203, 203, 203, 1008, 1389, 203, 1389, 203, 1389, - 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, - 1009, 203, 203, 1010, 203, 203, 1389, 203, 203, 203, - 203, 1008, 1389, 203, 203, 203, 203, 203, 1389, 203, - 203, 203, 1389, 203, 1389, 203, 203, 1389, 1389, 203, - 1010, 1389, 203, 1389, 203, 203, 1389, 1389, 203, 203, - 203, 203, 1389, 203, 203, 203, 1389, 1389, 203, 1389, - 203, 1389, 1088, 203, 1389, 1389, 203, 1389, 203, 203, - 1089, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, - - 203, 203, 203, 1389, 203, 1389, 1389, 203, 203, 1088, - 203, 1389, 1090, 203, 203, 203, 203, 1089, 1389, 1389, - 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, 1389, - 203, 203, 203, 1389, 203, 203, 1389, 203, 1092, 1090, - 203, 203, 203, 203, 1389, 1091, 203, 1389, 1389, 203, - 203, 203, 203, 1093, 203, 1389, 1389, 203, 203, 203, - 1389, 203, 203, 1389, 203, 1092, 1389, 203, 1389, 203, - 1389, 1389, 1091, 203, 203, 1389, 1094, 203, 203, 203, - 1093, 203, 203, 1389, 1389, 203, 1389, 1389, 203, 203, - 203, 203, 1095, 1389, 1389, 1389, 1389, 203, 203, 1389, - - 1389, 203, 203, 1094, 203, 203, 203, 1389, 1389, 203, - 203, 203, 1096, 1389, 203, 203, 203, 203, 1389, 1095, - 1097, 1389, 1098, 1389, 203, 203, 203, 1389, 1389, 203, - 203, 203, 203, 203, 1389, 1389, 203, 203, 203, 1096, - 203, 203, 203, 203, 1389, 1389, 203, 1097, 203, 1098, - 1099, 1389, 1389, 203, 203, 203, 203, 203, 1100, 203, - 203, 1389, 1389, 203, 203, 1389, 203, 203, 1389, 203, - 203, 1389, 1389, 203, 203, 203, 1101, 1099, 1389, 1389, - 1102, 203, 203, 203, 203, 1100, 203, 203, 203, 1389, - 1389, 203, 1104, 203, 203, 1389, 203, 203, 1103, 1389, - - 203, 203, 203, 1101, 203, 203, 1389, 1102, 1389, 1389, - 203, 203, 203, 203, 203, 203, 203, 1389, 1105, 1104, - 203, 203, 1389, 203, 203, 1103, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, - 203, 203, 1106, 203, 203, 1105, 1389, 203, 203, 1389, - 203, 203, 203, 203, 1108, 1107, 1389, 1389, 203, 203, - 203, 203, 1389, 203, 203, 203, 1389, 203, 1109, 1106, - 203, 203, 203, 1389, 1110, 203, 1389, 203, 203, 203, - 203, 1108, 1107, 1389, 1389, 203, 203, 203, 203, 1389, - 203, 203, 1111, 1389, 203, 1109, 203, 203, 203, 203, - - 1389, 1110, 203, 1389, 203, 203, 1389, 203, 1389, 1112, - 1389, 1389, 203, 1389, 203, 203, 1389, 203, 203, 1111, - 1389, 203, 203, 203, 1389, 203, 1389, 1389, 203, 203, - 203, 203, 203, 1113, 1389, 1389, 1112, 1114, 203, 203, - 1389, 203, 203, 203, 1116, 203, 203, 1115, 203, 203, - 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, - 1113, 1389, 1389, 203, 1114, 203, 203, 1389, 203, 203, - 203, 1116, 203, 203, 1115, 203, 203, 203, 1389, 203, - 203, 1389, 203, 203, 203, 203, 1389, 203, 203, 1118, - 203, 203, 203, 203, 203, 203, 1389, 203, 1120, 203, - - 203, 1389, 1117, 203, 203, 203, 1389, 203, 1389, 203, - 203, 203, 1389, 203, 203, 203, 1118, 203, 203, 203, - 1389, 203, 1389, 203, 203, 1120, 1389, 203, 1119, 1117, - 1389, 203, 203, 203, 203, 1389, 203, 203, 203, 203, - 203, 203, 1122, 1121, 203, 1389, 203, 203, 203, 203, - 203, 203, 1389, 1389, 203, 1119, 1389, 1389, 1389, 203, - 203, 1389, 1389, 203, 1389, 203, 203, 1389, 203, 1122, - 1121, 1389, 1389, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 1123, 203, - 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, 1389, - - 1389, 1389, 1389, 203, 203, 1389, 203, 203, 1389, 203, - 203, 203, 203, 1389, 203, 1123, 203, 203, 203, 203, - 203, 203, 203, 203, 1389, 203, 1389, 1125, 203, 1124, - 203, 203, 203, 203, 203, 1389, 1389, 203, 1389, 1126, - 1389, 1389, 1127, 1389, 203, 1389, 1389, 203, 203, 1389, - 203, 1389, 1389, 1389, 1125, 203, 1124, 1389, 203, 203, - 203, 203, 1389, 1128, 203, 203, 1126, 1389, 1389, 1127, - 203, 203, 1389, 1389, 203, 203, 203, 203, 203, 203, - 1389, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 203, - 1128, 1389, 203, 1389, 1389, 1389, 1389, 203, 1389, 1129, - - 1389, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, - 203, 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, - 203, 203, 1389, 203, 1389, 203, 1129, 1389, 203, 1389, - 203, 1389, 1389, 203, 203, 1389, 203, 1389, 1389, 1130, - 1389, 203, 1389, 203, 1389, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 1132, 203, 1389, 203, 1131, 203, - 203, 1389, 1389, 203, 1389, 203, 1130, 203, 1389, 1389, - 203, 1389, 203, 1389, 1389, 1389, 203, 203, 203, 1389, - 203, 1132, 1389, 1389, 1389, 1131, 203, 1389, 1389, 203, - 203, 203, 203, 1389, 203, 1389, 203, 1133, 203, 203, - - 203, 203, 1389, 1134, 203, 203, 1135, 203, 1389, 203, - 203, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, 203, - 1389, 1389, 1389, 203, 1133, 203, 1389, 203, 203, 1389, - 1134, 1389, 203, 1135, 203, 1389, 203, 203, 203, 1389, - 203, 203, 203, 1136, 203, 203, 203, 203, 1389, 203, - 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 1389, - 1389, 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, - 1136, 203, 203, 1137, 203, 1389, 203, 203, 203, 1389, - 203, 203, 1138, 203, 203, 203, 1389, 203, 203, 203, - 203, 1389, 1389, 203, 203, 203, 1389, 1139, 1389, 1389, - - 1137, 1389, 1389, 203, 203, 203, 1389, 1389, 1389, 1138, - 203, 203, 203, 203, 203, 203, 203, 203, 1389, 1389, - 203, 203, 203, 203, 1139, 1140, 1389, 1389, 1389, 1389, - 203, 203, 203, 203, 1389, 1389, 1389, 203, 1141, 203, - 203, 203, 203, 203, 203, 1389, 1389, 203, 203, 203, - 203, 1142, 1140, 1389, 1389, 203, 1389, 203, 203, 203, - 203, 203, 1389, 203, 203, 1141, 203, 1143, 203, 203, - 203, 203, 1389, 203, 203, 203, 203, 1389, 1142, 1389, - 1389, 1389, 203, 203, 203, 203, 203, 1144, 203, 1389, - 203, 203, 1389, 203, 1143, 203, 1389, 203, 203, 1389, - - 203, 203, 1389, 203, 1389, 1389, 1389, 1389, 1389, 1389, - 203, 203, 1145, 203, 1144, 1389, 203, 203, 203, 1389, - 203, 203, 203, 1389, 1146, 203, 203, 203, 203, 203, - 203, 1389, 1147, 1389, 203, 203, 203, 203, 203, 1145, - 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, 1389, - 203, 1146, 203, 203, 203, 1389, 203, 203, 1389, 1147, - 1389, 203, 203, 203, 203, 203, 1389, 203, 1389, 1148, - 1389, 1389, 203, 1149, 203, 203, 1389, 203, 203, 1150, - 1389, 1389, 1389, 203, 203, 203, 1389, 203, 1389, 1389, - 1389, 1389, 203, 203, 203, 1389, 1148, 203, 1389, 203, - - 1149, 203, 203, 203, 1151, 203, 1150, 1389, 1389, 203, - 203, 203, 203, 1389, 203, 1389, 203, 1389, 203, 1389, - 203, 203, 1152, 203, 203, 203, 203, 203, 203, 1389, - 203, 1151, 203, 1153, 1389, 1154, 203, 203, 1389, 1389, - 1389, 1389, 1389, 203, 1389, 203, 203, 1389, 203, 1152, - 203, 1389, 203, 203, 203, 203, 1155, 1389, 203, 203, - 1153, 1389, 1154, 1389, 203, 1389, 1389, 203, 1389, 203, - 203, 1389, 1156, 203, 203, 203, 1389, 203, 1389, 203, - 203, 1389, 203, 1155, 1389, 203, 203, 1389, 203, 1389, - 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, 1156, - - 1389, 203, 1389, 1389, 203, 1389, 203, 1157, 1389, 203, - 1389, 203, 1389, 203, 1389, 203, 1389, 203, 1158, 203, - 203, 1389, 1159, 203, 1389, 203, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 1157, 203, 1389, 1389, 203, 203, - 1389, 203, 203, 1389, 203, 1158, 203, 1389, 1389, 1159, - 203, 203, 1389, 203, 203, 1389, 203, 1389, 203, 203, - 1389, 1161, 203, 203, 1389, 203, 203, 1389, 203, 203, - 1160, 1389, 203, 1389, 203, 203, 1389, 1389, 203, 203, - 1162, 1389, 1389, 1389, 203, 1389, 1389, 1389, 1161, 1389, - 203, 203, 203, 203, 1389, 1389, 1389, 1160, 203, 203, - - 1389, 203, 203, 203, 1389, 1389, 203, 1162, 1389, 1211, - 203, 203, 203, 203, 203, 1389, 203, 203, 203, 203, - 203, 203, 203, 1389, 1389, 203, 203, 1389, 1389, 203, - 203, 1389, 1389, 1389, 1389, 1389, 1211, 203, 1389, 203, - 203, 203, 1389, 203, 203, 1389, 203, 203, 203, 203, - 1389, 203, 203, 203, 1212, 1389, 203, 203, 203, 203, - 203, 203, 1214, 1213, 203, 203, 203, 203, 203, 1389, - 203, 1389, 203, 203, 203, 1389, 1389, 1389, 203, 203, - 1389, 1212, 203, 1389, 203, 203, 203, 203, 203, 1214, - 1213, 203, 203, 203, 203, 203, 1389, 203, 203, 203, - - 203, 1389, 203, 203, 203, 203, 203, 1389, 203, 203, - 1216, 203, 1217, 1215, 203, 203, 203, 1389, 203, 203, - 1389, 1389, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, - 203, 203, 203, 203, 1389, 203, 1389, 1216, 203, 1217, - 1215, 203, 203, 203, 1389, 203, 203, 203, 203, 203, - 203, 203, 1389, 1389, 203, 203, 1218, 1389, 1389, 203, - 203, 203, 1219, 203, 1389, 1389, 1389, 1389, 203, 1389, - 1389, 1389, 1389, 203, 203, 203, 203, 203, 1389, 1389, - 1389, 203, 203, 1218, 1389, 1220, 203, 203, 203, 1219, - 203, 1221, 1389, 203, 203, 203, 203, 203, 203, 203, - - 203, 203, 1389, 203, 203, 1222, 203, 1389, 1389, 203, - 1389, 1389, 1220, 1389, 1389, 203, 1389, 203, 1221, 1389, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 1389, - 203, 203, 1222, 203, 1389, 1389, 203, 1389, 203, 1389, - 203, 1224, 203, 1389, 203, 203, 1223, 1389, 1389, 203, - 203, 203, 1389, 203, 203, 1389, 1389, 203, 203, 203, - 1389, 1389, 1389, 203, 203, 203, 1389, 203, 1224, 203, - 1389, 1389, 203, 1223, 1389, 1389, 1389, 203, 203, 1389, - 203, 1389, 1389, 1225, 203, 203, 203, 1389, 1389, 1389, - 203, 203, 203, 203, 203, 203, 203, 1389, 1389, 203, - - 203, 203, 1389, 1226, 203, 203, 1389, 1389, 203, 1389, - 1225, 1389, 1389, 203, 1389, 1389, 1389, 1389, 1389, 203, - 203, 203, 203, 1389, 1389, 1389, 203, 203, 203, 1389, - 1226, 203, 203, 1389, 203, 203, 203, 203, 1227, 203, - 203, 203, 203, 203, 203, 1228, 203, 203, 203, 203, - 203, 203, 1389, 1389, 1389, 203, 1389, 203, 203, 1389, - 1389, 203, 1389, 203, 203, 1227, 203, 203, 203, 203, - 203, 203, 1228, 203, 203, 203, 203, 203, 203, 203, - 1389, 203, 203, 1389, 203, 203, 203, 1229, 203, 203, - 1231, 203, 1389, 1230, 203, 203, 1389, 1389, 1389, 203, - - 203, 1389, 1389, 1389, 1389, 1389, 203, 1389, 203, 203, - 1389, 1389, 1389, 203, 1229, 203, 203, 1231, 203, 1389, - 1230, 203, 203, 203, 1389, 1389, 203, 203, 203, 1389, - 203, 1389, 203, 203, 1389, 1389, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 1389, 1389, 203, 1389, 203, 1389, - 203, 203, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, - 203, 1389, 1389, 203, 203, 203, 203, 1389, 203, 203, - 203, 1389, 203, 203, 203, 203, 1389, 1389, 203, 203, - 1389, 203, 1389, 203, 203, 1233, 1389, 1389, 203, 203, - 203, 1389, 203, 203, 1389, 203, 1389, 203, 1389, 203, - - 1389, 203, 203, 1389, 1389, 203, 203, 203, 203, 203, - 203, 203, 1233, 1232, 203, 203, 203, 1389, 1389, 203, - 203, 1234, 203, 203, 1389, 203, 1389, 203, 1389, 203, - 1389, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, - 1232, 203, 1389, 203, 1235, 203, 203, 203, 1234, 203, - 203, 203, 203, 1389, 203, 1389, 203, 203, 1389, 1389, - 203, 203, 203, 203, 203, 1389, 203, 203, 203, 1389, - 203, 1235, 203, 203, 203, 1236, 203, 203, 203, 203, - 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 1389, - 203, 203, 1237, 1389, 203, 203, 1389, 1389, 1389, 1389, - - 203, 1389, 1236, 203, 203, 203, 203, 1389, 203, 203, - 203, 1389, 1389, 203, 203, 203, 203, 1389, 203, 1237, - 1239, 203, 1389, 203, 1389, 1389, 203, 203, 203, 203, - 203, 1389, 203, 203, 203, 1238, 203, 203, 1389, 203, - 1389, 1389, 203, 203, 1389, 1389, 1389, 1239, 203, 1389, - 203, 1389, 1389, 203, 203, 203, 203, 1389, 1389, 1389, - 203, 203, 1238, 203, 203, 1241, 203, 203, 1240, 203, - 1389, 203, 1389, 1389, 203, 203, 203, 203, 1243, 1389, - 1389, 1389, 1389, 203, 203, 203, 1389, 1242, 203, 1389, - 1389, 203, 1241, 1389, 203, 1240, 203, 1389, 203, 1389, - - 1389, 203, 203, 203, 203, 1243, 203, 1389, 203, 1389, - 203, 203, 203, 203, 1242, 203, 1244, 1389, 203, 1389, - 1245, 1389, 1389, 1389, 1389, 203, 1389, 203, 1389, 203, - 1389, 203, 203, 203, 1389, 203, 203, 203, 1389, 1389, - 203, 203, 1389, 1244, 1389, 203, 1389, 1245, 203, 1389, - 203, 1389, 203, 1389, 203, 1246, 203, 1389, 203, 203, - 203, 1389, 1389, 203, 203, 1389, 1389, 203, 203, 203, - 1389, 203, 1389, 203, 1247, 203, 1389, 203, 203, 203, - 1389, 1389, 1246, 203, 1389, 1389, 1389, 203, 1389, 1389, - 203, 1389, 1248, 1389, 203, 1389, 203, 203, 203, 1389, - - 203, 1247, 203, 1389, 1389, 203, 203, 1389, 1389, 203, - 203, 203, 1389, 1249, 1389, 203, 203, 203, 1389, 1248, - 203, 203, 1389, 1389, 203, 203, 1389, 1389, 1389, 203, - 1389, 1389, 203, 1389, 203, 1389, 203, 1389, 203, 203, - 1249, 1389, 203, 203, 203, 1250, 1389, 203, 203, 1389, - 1389, 1251, 203, 203, 1389, 203, 203, 1389, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 203, 203, - 1389, 203, 1250, 1389, 203, 1389, 1389, 1252, 1251, 1389, - 203, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, - - 203, 203, 203, 1389, 1252, 1389, 1254, 203, 1253, 1389, - 1389, 1389, 203, 203, 203, 203, 203, 1389, 1389, 1389, - 203, 203, 1389, 1389, 1389, 203, 203, 203, 1389, 203, - 203, 1389, 203, 1254, 203, 1253, 1389, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 203, 1389, - 203, 203, 1389, 203, 1389, 1389, 203, 203, 1389, 203, - 1389, 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, - 203, 203, 203, 203, 1255, 203, 1389, 203, 203, 1256, - 203, 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, - 1389, 203, 1389, 1389, 203, 203, 1389, 203, 203, 1389, - - 203, 1255, 203, 1389, 1389, 203, 1256, 203, 203, 203, - 203, 203, 203, 203, 203, 1389, 203, 1389, 203, 203, - 1389, 203, 1389, 1389, 203, 203, 203, 203, 203, 1389, - 1283, 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, - 203, 203, 1389, 1389, 203, 1389, 203, 1389, 203, 1389, - 203, 203, 203, 203, 203, 203, 203, 1283, 1389, 1389, - 203, 203, 203, 1389, 203, 203, 1389, 203, 1284, 1259, - 1389, 203, 203, 1389, 1285, 203, 1389, 203, 203, 203, - 1389, 203, 1389, 203, 203, 1389, 1389, 1389, 1286, 203, - 1389, 203, 203, 203, 203, 1389, 203, 203, 1389, 203, - - 1389, 1285, 203, 203, 1389, 203, 203, 1389, 1389, 1389, - 203, 203, 203, 203, 1389, 1286, 203, 1389, 203, 203, - 203, 203, 203, 203, 203, 1389, 203, 1389, 203, 203, - 203, 1287, 1288, 203, 1389, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 1287, 1288, - 1389, 1289, 203, 203, 203, 203, 203, 1389, 203, 203, - 203, 203, 1290, 203, 203, 203, 1389, 203, 203, 203, - 203, 203, 203, 203, 1389, 203, 203, 1389, 1289, 203, - 203, 203, 203, 203, 1389, 203, 203, 203, 1291, 1290, - - 1389, 203, 203, 203, 1389, 203, 1389, 203, 203, 203, - 1389, 1389, 203, 203, 1389, 1389, 203, 203, 1389, 203, - 1389, 1389, 203, 203, 203, 1291, 203, 1389, 1389, 203, - 203, 203, 203, 1389, 1292, 203, 203, 203, 1389, 203, - 1293, 1389, 203, 203, 203, 203, 1389, 203, 1389, 203, - 203, 203, 203, 203, 1389, 203, 1389, 1389, 203, 1389, - 1389, 1292, 1389, 203, 203, 1389, 203, 1293, 1389, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 1389, 203, - 203, 203, 203, 203, 203, 203, 203, 1389, 203, 1389, - 1294, 203, 1389, 203, 1295, 1389, 203, 1389, 203, 203, - - 203, 1389, 203, 203, 203, 1389, 1389, 203, 203, 1296, - 203, 203, 203, 203, 203, 203, 1389, 1294, 203, 203, - 203, 1295, 203, 203, 1297, 203, 203, 1389, 1389, 203, - 203, 203, 1389, 203, 203, 203, 1296, 1389, 1389, 1389, - 203, 203, 1389, 1389, 1389, 203, 203, 1389, 1389, 203, - 1389, 1297, 203, 1389, 203, 1389, 203, 1298, 1389, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 1389, - 203, 1299, 203, 203, 1389, 203, 1389, 1389, 203, 203, - 1389, 203, 1389, 1389, 1298, 1389, 203, 1389, 1389, 1389, - 203, 203, 203, 203, 1389, 203, 1389, 203, 1299, 1389, - - 203, 1389, 203, 1300, 203, 203, 203, 203, 203, 203, - 203, 203, 1389, 1389, 203, 203, 203, 1389, 1389, 203, - 203, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1300, 203, 1389, 203, 203, 203, 203, 203, 203, 1389, - 1389, 203, 203, 203, 1389, 1389, 203, 203, 203, 1389, - 203, 203, 1389, 203, 1389, 203, 1301, 1389, 203, 203, - 203, 203, 1389, 203, 1389, 1302, 203, 203, 1303, 203, - 1389, 203, 1389, 1389, 203, 203, 1389, 203, 203, 203, - 203, 1389, 203, 1301, 1389, 203, 203, 203, 203, 1389, - 203, 1389, 1302, 203, 203, 1303, 203, 203, 203, 203, - - 1389, 203, 1389, 1305, 203, 1304, 203, 203, 1306, 203, - 1389, 1389, 203, 203, 1389, 1389, 1389, 203, 203, 1389, - 1389, 203, 1389, 203, 203, 1389, 203, 203, 203, 1389, - 1305, 203, 1304, 1389, 203, 1306, 203, 203, 1389, 203, - 203, 1389, 203, 203, 203, 203, 203, 203, 203, 1389, - 203, 1389, 203, 203, 203, 203, 1323, 203, 1389, 1389, - 1389, 203, 203, 203, 203, 1389, 1389, 203, 1389, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 1389, 203, - 203, 203, 203, 1323, 203, 1326, 1325, 1389, 203, 203, - 203, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, - - 203, 203, 203, 203, 203, 1389, 203, 203, 203, 203, - 203, 1389, 1326, 1325, 203, 1389, 203, 203, 203, 203, - 203, 1389, 203, 203, 203, 1389, 203, 203, 203, 1389, - 203, 1389, 203, 203, 203, 203, 203, 203, 1327, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 1328, 1389, 203, 203, 1389, 203, 203, 203, 203, 203, - 1389, 1389, 203, 203, 1389, 1327, 203, 203, 203, 203, - 1389, 1389, 203, 203, 203, 203, 1389, 1328, 203, 203, - 1389, 1389, 203, 203, 203, 203, 203, 1329, 1330, 1389, - 1389, 1389, 1331, 203, 203, 203, 1332, 203, 203, 203, - - 203, 203, 1389, 1389, 203, 203, 203, 1389, 203, 203, - 1389, 203, 203, 203, 1329, 1330, 203, 1389, 203, 1331, - 203, 203, 1389, 1332, 203, 203, 203, 203, 203, 1389, - 203, 203, 1389, 203, 203, 203, 203, 1389, 203, 203, - 203, 1389, 203, 203, 1389, 203, 1389, 1389, 203, 1389, - 203, 1389, 203, 1389, 1389, 203, 203, 203, 203, 1389, - 203, 203, 203, 1389, 203, 203, 1389, 203, 1389, 203, - 203, 1334, 1333, 1389, 203, 203, 1389, 203, 1335, 203, - 203, 1389, 203, 203, 203, 203, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 203, 1336, 203, 203, 1334, 1333, - - 203, 203, 203, 1345, 1338, 1335, 203, 203, 1389, 203, - 1347, 203, 1389, 203, 203, 1389, 203, 1389, 1389, 203, - 203, 203, 1336, 203, 1389, 1389, 1389, 203, 203, 203, - 203, 1389, 203, 203, 1389, 1389, 203, 1347, 203, 1389, - 203, 203, 1389, 203, 1389, 1389, 203, 203, 203, 1389, - 203, 1389, 1389, 1389, 203, 203, 203, 203, 203, 203, - 203, 1389, 203, 203, 203, 203, 203, 203, 203, 1389, - 203, 1348, 203, 203, 203, 203, 203, 203, 203, 203, - 1389, 203, 1389, 203, 203, 203, 1389, 203, 1389, 203, - 1389, 203, 1389, 203, 1389, 203, 1389, 203, 1348, 203, - - 203, 203, 203, 203, 1389, 203, 203, 203, 203, 1389, - 203, 203, 203, 1389, 203, 1349, 203, 1389, 1389, 1389, - 203, 203, 1389, 1389, 1389, 1389, 203, 203, 1389, 203, - 1389, 1389, 1389, 1389, 203, 203, 1389, 203, 203, 203, - 203, 203, 1349, 203, 1389, 203, 1389, 203, 203, 1389, - 203, 203, 1389, 203, 203, 203, 203, 1389, 203, 203, - 203, 1350, 1389, 203, 203, 203, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 203, 1389, 203, 203, 203, 203, - 1389, 203, 203, 203, 1389, 203, 203, 203, 1350, 1389, - 203, 203, 1389, 203, 1389, 203, 203, 1389, 203, 203, - - 203, 203, 1358, 203, 1389, 203, 203, 203, 1389, 203, - 1389, 203, 203, 1389, 1389, 203, 203, 1389, 1389, 1389, - 1389, 203, 203, 1389, 1389, 1389, 203, 203, 1389, 1358, - 1389, 1389, 203, 1389, 203, 1389, 203, 1389, 203, 203, - 1389, 1389, 203, 203, 1389, 1389, 1389, 1389, 203, 47, - 47, 47, 47, 47, 90, 1389, 1389, 90, 90, 188, - 188, 188, 1389, 188, 190, 1389, 190, 190, 190, 193, - 1389, 193, 193, 193, 203, 1389, 203, 203, 203, 7, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389 + 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, + + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, + 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, + 95, 99, 105, 100, 129, 131, 106, 109, 139, 101, + 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, + + 177, 111, 108, 178, 112, 98, 183, 113, 99, 105, + 100, 129, 131, 106, 109, 139, 101, 130, 102, 107, + 132, 110, 103, 104, 140, 176, 133, 177, 111, 108, + 178, 112, 114, 183, 113, 119, 115, 120, 188, 86, + 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, + 191, 143, 86, 86, 146, 181, 182, 196, 197, 114, + 1366, 192, 119, 115, 120, 1365, 147, 116, 141, 121, + 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, + 148, 146, 181, 182, 291, 124, 149, 150, 125, 296, + 157, 126, 134, 147, 127, 1364, 158, 128, 135, 136, + + 137, 179, 86, 86, 123, 138, 156, 148, 1363, 180, + 1362, 291, 124, 149, 150, 125, 296, 157, 126, 134, + 1361, 127, 151, 158, 128, 135, 136, 137, 179, 297, + 152, 159, 138, 292, 153, 160, 180, 154, 155, 161, + 200, 293, 278, 301, 279, 162, 1359, 280, 1357, 151, + 294, 1355, 200, 295, 1353, 302, 297, 152, 159, 1351, + 292, 153, 160, 1349, 154, 155, 161, 200, 293, 278, + 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, + 295, 166, 302, 167, 312, 168, 169, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 188, 86, 1347, + + 163, 1345, 164, 305, 1343, 165, 298, 299, 166, 303, + 167, 312, 168, 169, 170, 310, 304, 231, 171, 200, + 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, + 322, 175, 1341, 298, 299, 1339, 303, 1241, 1241, 1316, + 1316, 170, 310, 304, 231, 171, 200, 300, 172, 173, + 232, 200, 311, 320, 321, 174, 200, 322, 175, 194, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, + 233, 313, 1337, 1333, 200, 1329, 314, 327, 234, 187, + 187, 187, 200, 333, 235, 201, 200, 202, 334, 323, + + 325, 326, 241, 203, 200, 204, 324, 233, 313, 205, + 206, 200, 200, 314, 327, 234, 335, 338, 1322, 200, + 333, 235, 201, 200, 202, 334, 1315, 325, 326, 241, + 203, 200, 204, 1301, 339, 1287, 205, 206, 1263, 200, + 1239, 1193, 1147, 335, 338, 187, 187, 187, 1072, 187, + 187, 187, 187, 187, 187, 997, 898, 340, 242, 243, + 246, 339, 200, 244, 247, 187, 187, 187, 200, 245, + 248, 341, 207, 200, 344, 336, 208, 200, 200, 200, + 200, 337, 209, 200, 340, 242, 243, 246, 345, 200, + 244, 247, 210, 200, 799, 200, 245, 248, 341, 207, + + 200, 344, 336, 208, 200, 200, 200, 200, 337, 209, + 200, 671, 543, 200, 346, 345, 283, 284, 347, 210, + 200, 187, 211, 200, 261, 416, 200, 352, 262, 212, + 200, 342, 263, 200, 343, 415, 213, 353, 264, 214, + 200, 346, 215, 283, 284, 347, 200, 288, 200, 211, + 200, 261, 348, 200, 352, 262, 212, 200, 342, 263, + 200, 343, 349, 213, 353, 264, 214, 350, 351, 215, + 287, 286, 281, 200, 216, 200, 200, 285, 217, 348, + 282, 200, 218, 354, 355, 361, 200, 200, 219, 349, + 356, 220, 357, 362, 350, 351, 200, 200, 200, 281, + + 199, 216, 198, 200, 285, 217, 187, 282, 200, 218, + 354, 355, 361, 200, 200, 219, 189, 356, 220, 357, + 362, 363, 364, 200, 200, 200, 200, 306, 307, 308, + 200, 309, 315, 221, 316, 222, 200, 317, 367, 358, + 223, 359, 368, 318, 369, 224, 200, 186, 363, 364, + 319, 184, 360, 200, 306, 307, 308, 200, 309, 315, + 221, 316, 222, 200, 317, 367, 358, 223, 359, 368, + 318, 369, 224, 200, 225, 365, 370, 319, 366, 360, + 371, 200, 226, 372, 373, 227, 374, 328, 228, 329, + 377, 229, 375, 330, 230, 97, 376, 382, 96, 385, + + 331, 225, 365, 370, 332, 366, 87, 371, 200, 226, + 372, 373, 227, 374, 328, 228, 329, 377, 229, 375, + 330, 230, 236, 376, 382, 383, 385, 331, 237, 238, + 239, 332, 378, 389, 386, 240, 384, 379, 391, 392, + 200, 1367, 393, 387, 394, 380, 395, 390, 47, 236, + 381, 388, 383, 398, 399, 237, 238, 239, 47, 378, + 389, 386, 240, 384, 379, 391, 392, 200, 249, 393, + 387, 394, 380, 395, 390, 200, 396, 381, 388, 400, + 398, 399, 250, 406, 403, 200, 1367, 397, 251, 252, + 1367, 404, 407, 401, 405, 249, 1367, 1367, 412, 408, + + 413, 414, 200, 396, 1367, 409, 400, 1367, 544, 250, + 406, 403, 200, 402, 397, 251, 252, 200, 404, 407, + 401, 405, 253, 410, 200, 412, 408, 413, 414, 545, + 254, 200, 409, 546, 255, 544, 411, 256, 257, 1367, + 402, 1367, 1367, 1367, 200, 1367, 1367, 1367, 1367, 253, + 410, 200, 1367, 1367, 1367, 547, 545, 254, 200, 1367, + 546, 255, 429, 411, 256, 257, 258, 200, 200, 200, + 418, 200, 200, 200, 200, 200, 548, 259, 200, 200, + 200, 200, 547, 260, 549, 550, 200, 1367, 200, 429, + 551, 200, 1367, 258, 200, 200, 200, 418, 200, 200, + + 200, 200, 200, 548, 259, 200, 200, 200, 200, 1367, + 260, 549, 550, 200, 265, 200, 266, 551, 200, 267, + 200, 552, 268, 420, 269, 200, 270, 271, 1367, 1367, + 200, 421, 1367, 1367, 553, 200, 200, 1367, 1367, 1367, + 1367, 265, 1367, 266, 1367, 1367, 267, 200, 552, 268, + 420, 269, 200, 270, 271, 200, 200, 200, 421, 200, + 200, 553, 200, 200, 272, 200, 430, 200, 273, 200, + 419, 274, 275, 424, 200, 200, 200, 557, 276, 200, + 558, 277, 200, 200, 559, 560, 200, 200, 200, 1367, + 1367, 272, 200, 430, 200, 273, 200, 419, 274, 275, + + 424, 200, 200, 200, 557, 276, 200, 558, 277, 1367, + 1367, 559, 560, 1367, 1367, 200, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, + 289, 289, 289, 289, 289, 289, 92, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 417, 417, 417, + 417, 417, 417, 417, 417, 417, 417, 194, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 422, 425, + 554, 423, 555, 561, 562, 563, 564, 1367, 200, 200, + 200, 200, 565, 566, 200, 200, 200, 556, 200, 567, + + 200, 200, 1367, 1367, 200, 422, 425, 554, 423, 555, + 561, 562, 563, 564, 200, 200, 200, 200, 200, 565, + 566, 200, 200, 200, 556, 200, 567, 200, 200, 426, + 427, 200, 431, 568, 200, 200, 1367, 200, 569, 432, + 433, 200, 200, 428, 200, 572, 573, 200, 574, 575, + 1367, 200, 576, 200, 1367, 577, 426, 427, 200, 431, + 568, 200, 200, 200, 200, 569, 432, 433, 1367, 200, + 428, 200, 572, 573, 200, 574, 575, 438, 200, 576, + 200, 200, 577, 578, 1367, 200, 570, 439, 1367, 1367, + 200, 434, 435, 436, 1367, 437, 200, 200, 200, 1367, + + 200, 571, 579, 200, 438, 200, 200, 200, 200, 440, + 578, 200, 452, 570, 439, 200, 200, 200, 434, 435, + 436, 200, 437, 200, 200, 200, 441, 200, 571, 579, + 200, 442, 200, 200, 200, 580, 440, 1367, 200, 452, + 1367, 581, 200, 200, 200, 1367, 1367, 1367, 200, 582, + 1367, 1367, 1367, 441, 583, 1367, 584, 585, 442, 443, + 1367, 444, 580, 1367, 445, 586, 587, 200, 581, 200, + 446, 1367, 200, 448, 449, 1367, 582, 447, 200, 200, + 200, 583, 200, 584, 585, 200, 443, 450, 444, 588, + 200, 445, 586, 587, 200, 589, 200, 446, 200, 200, + + 448, 449, 200, 590, 447, 200, 200, 200, 451, 200, + 591, 592, 200, 593, 450, 455, 588, 200, 200, 1367, + 1367, 594, 589, 200, 200, 200, 200, 200, 1367, 200, + 590, 200, 461, 463, 200, 451, 200, 591, 592, 200, + 593, 595, 455, 200, 200, 200, 453, 454, 594, 1367, + 200, 200, 596, 200, 200, 200, 1367, 200, 200, 461, + 463, 200, 200, 200, 597, 598, 200, 200, 595, 599, + 200, 200, 600, 453, 454, 601, 462, 602, 200, 596, + 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, 200, + 1367, 597, 598, 1367, 200, 456, 599, 457, 1367, 600, + + 1367, 458, 601, 462, 602, 200, 603, 200, 459, 200, + 200, 606, 460, 200, 464, 200, 200, 200, 1367, 466, + 465, 200, 456, 607, 457, 467, 200, 200, 458, 200, + 1367, 608, 200, 603, 200, 459, 200, 200, 606, 460, + 200, 464, 609, 200, 200, 200, 466, 465, 200, 200, + 607, 1367, 467, 200, 200, 468, 200, 200, 608, 200, + 610, 200, 611, 604, 200, 200, 614, 469, 200, 609, + 200, 615, 200, 605, 616, 470, 200, 200, 471, 200, + 200, 472, 468, 1367, 200, 1367, 200, 610, 200, 611, + 604, 200, 200, 614, 469, 200, 617, 200, 615, 618, + + 605, 616, 470, 1367, 200, 471, 200, 200, 472, 200, + 200, 200, 200, 200, 619, 612, 200, 200, 200, 473, + 200, 200, 200, 617, 474, 613, 618, 1367, 1367, 1367, + 200, 1367, 1367, 1367, 1367, 620, 200, 200, 200, 200, + 200, 619, 612, 200, 200, 621, 473, 200, 200, 200, + 200, 474, 613, 622, 200, 200, 200, 200, 480, 481, + 200, 475, 620, 200, 623, 200, 624, 200, 200, 625, + 200, 1367, 621, 1367, 200, 200, 1367, 200, 200, 1367, + 622, 200, 200, 200, 200, 480, 481, 200, 475, 1367, + 200, 623, 200, 624, 482, 200, 625, 200, 476, 200, + + 483, 200, 200, 200, 626, 200, 200, 628, 477, 200, + 200, 200, 200, 478, 479, 1367, 489, 200, 200, 200, + 1367, 482, 200, 627, 1367, 476, 200, 483, 1367, 1367, + 200, 626, 1367, 200, 628, 477, 200, 200, 500, 200, + 478, 479, 200, 489, 200, 200, 200, 200, 200, 200, + 627, 200, 200, 484, 490, 485, 503, 200, 200, 200, + 504, 631, 632, 1367, 200, 500, 200, 200, 1367, 200, + 1367, 1367, 633, 1367, 200, 200, 200, 629, 200, 200, + 484, 490, 485, 503, 200, 200, 200, 504, 631, 632, + 630, 200, 1367, 200, 200, 486, 634, 487, 200, 633, + + 491, 635, 636, 200, 629, 200, 200, 200, 488, 200, + 200, 637, 638, 200, 200, 492, 639, 630, 200, 200, + 1367, 640, 486, 634, 487, 200, 641, 491, 635, 636, + 1367, 1367, 200, 200, 200, 488, 200, 200, 637, 638, + 200, 200, 492, 639, 1367, 200, 200, 200, 640, 200, + 495, 1367, 200, 641, 200, 493, 1367, 200, 494, 200, + 496, 1367, 200, 200, 642, 200, 643, 1367, 644, 1367, + 200, 200, 1367, 200, 200, 200, 200, 495, 200, 200, + 1367, 200, 493, 200, 200, 494, 200, 496, 497, 200, + 200, 642, 200, 643, 200, 644, 200, 200, 200, 498, + + 200, 200, 200, 1367, 645, 200, 200, 200, 1367, 200, + 200, 1367, 1367, 646, 200, 497, 647, 648, 1367, 200, + 649, 200, 1367, 200, 1367, 650, 498, 651, 200, 1367, + 200, 645, 200, 200, 200, 200, 200, 200, 499, 200, + 646, 200, 200, 647, 648, 200, 200, 649, 501, 200, + 1367, 505, 650, 652, 651, 200, 200, 200, 653, 200, + 1367, 200, 200, 502, 200, 499, 200, 200, 654, 200, + 657, 200, 200, 1367, 510, 501, 200, 200, 505, 200, + 652, 200, 200, 200, 660, 653, 200, 200, 200, 1367, + 502, 200, 1367, 1367, 200, 654, 1367, 657, 200, 1367, + + 655, 510, 1367, 1367, 200, 511, 200, 200, 200, 656, + 1367, 660, 200, 200, 200, 506, 512, 200, 200, 513, + 507, 661, 662, 200, 1367, 200, 200, 655, 508, 658, + 200, 659, 511, 509, 200, 200, 656, 517, 200, 200, + 663, 200, 506, 512, 200, 200, 513, 507, 661, 662, + 200, 518, 200, 200, 1367, 508, 658, 200, 659, 200, + 509, 200, 200, 519, 517, 200, 514, 663, 200, 200, + 664, 665, 200, 666, 669, 515, 1367, 200, 518, 200, + 1367, 520, 200, 516, 1367, 200, 200, 200, 200, 200, + 519, 1367, 1367, 514, 1367, 200, 200, 664, 665, 667, + + 666, 669, 515, 668, 200, 200, 200, 200, 520, 200, + 516, 200, 200, 670, 200, 522, 200, 200, 523, 200, + 521, 200, 200, 200, 800, 200, 667, 200, 801, 200, + 668, 200, 200, 1367, 200, 1367, 802, 803, 200, 200, + 670, 200, 522, 804, 200, 523, 200, 521, 200, 526, + 200, 800, 200, 200, 200, 801, 200, 1367, 200, 200, + 200, 524, 200, 802, 803, 805, 200, 200, 200, 200, + 804, 200, 525, 200, 806, 200, 526, 200, 1367, 527, + 200, 200, 807, 200, 528, 1367, 200, 200, 524, 200, + 1367, 200, 805, 200, 200, 1367, 200, 808, 200, 525, + + 200, 806, 200, 200, 200, 529, 527, 535, 200, 807, + 200, 528, 200, 200, 809, 810, 534, 200, 200, 200, + 200, 200, 200, 200, 808, 530, 1367, 200, 1367, 1367, + 200, 811, 529, 1367, 535, 1367, 1367, 200, 1367, 200, + 200, 809, 810, 534, 200, 812, 200, 813, 200, 200, + 200, 1367, 530, 531, 200, 536, 200, 200, 811, 814, + 532, 537, 200, 533, 200, 538, 200, 200, 1367, 200, + 815, 816, 812, 1367, 813, 200, 200, 1367, 539, 817, + 531, 818, 536, 200, 200, 200, 814, 532, 537, 200, + 533, 540, 538, 200, 200, 200, 200, 815, 816, 1367, + + 200, 200, 200, 200, 200, 539, 817, 819, 818, 542, + 200, 200, 200, 200, 674, 541, 200, 200, 540, 820, + 200, 200, 200, 200, 821, 822, 200, 200, 200, 823, + 824, 200, 825, 200, 819, 1367, 542, 200, 200, 1367, + 200, 674, 541, 200, 200, 1367, 820, 200, 200, 1367, + 200, 821, 822, 200, 1367, 1367, 823, 824, 1367, 825, + 200, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 289, 417, 417, 417, 417, 417, 417, 417, 417, 417, + 417, 200, 672, 200, 673, 200, 200, 200, 200, 826, + 827, 200, 200, 200, 200, 1367, 828, 829, 1367, 830, + + 1367, 200, 200, 200, 200, 1367, 1367, 1367, 200, 672, + 200, 673, 200, 200, 200, 200, 826, 827, 200, 200, + 200, 200, 675, 828, 829, 200, 830, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, + 200, 200, 200, 1367, 831, 200, 200, 1367, 676, 675, + 832, 1367, 200, 833, 200, 834, 1367, 1367, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 677, 831, 200, 200, 200, 676, 200, 832, 200, 200, + 833, 835, 834, 679, 200, 200, 200, 1367, 680, 200, + 200, 836, 678, 200, 200, 200, 837, 677, 838, 200, + + 200, 200, 681, 200, 200, 200, 200, 839, 835, 200, + 679, 200, 840, 200, 200, 680, 200, 200, 836, 678, + 200, 200, 200, 837, 200, 838, 200, 200, 1367, 681, + 200, 200, 1367, 685, 839, 1367, 200, 1367, 1367, 840, + 200, 200, 682, 1367, 683, 200, 841, 200, 200, 200, + 842, 200, 843, 1367, 200, 200, 844, 200, 200, 684, + 685, 686, 200, 1367, 200, 200, 687, 200, 200, 682, + 200, 683, 200, 841, 200, 200, 200, 842, 200, 843, + 200, 200, 200, 844, 1367, 200, 684, 1367, 686, 200, + 689, 200, 200, 687, 200, 200, 1367, 200, 200, 1367, + + 845, 200, 690, 846, 200, 200, 200, 200, 847, 688, + 200, 200, 1367, 200, 200, 1367, 200, 689, 691, 850, + 1367, 200, 1367, 200, 1367, 200, 200, 845, 848, 690, + 846, 200, 851, 200, 852, 847, 688, 200, 200, 849, + 200, 200, 200, 200, 200, 691, 850, 693, 692, 200, + 200, 200, 853, 200, 200, 848, 200, 200, 200, 851, + 854, 852, 857, 694, 858, 1367, 849, 200, 200, 200, + 695, 200, 200, 1367, 693, 692, 200, 200, 200, 853, + 1367, 200, 200, 200, 200, 200, 1367, 854, 200, 857, + 694, 858, 696, 859, 200, 200, 1367, 695, 200, 200, + + 855, 856, 697, 698, 200, 860, 200, 200, 200, 200, + 200, 1367, 861, 200, 862, 200, 200, 863, 699, 696, + 859, 1367, 864, 200, 1367, 200, 200, 855, 856, 697, + 698, 1367, 860, 200, 200, 200, 700, 200, 200, 861, + 200, 862, 200, 200, 863, 699, 865, 701, 200, 864, + 200, 200, 1367, 200, 866, 1367, 200, 200, 200, 1367, + 200, 867, 868, 700, 869, 200, 200, 200, 1367, 200, + 1367, 702, 1367, 865, 701, 200, 200, 1367, 200, 703, + 1367, 866, 200, 200, 200, 200, 200, 200, 867, 868, + 1367, 869, 200, 200, 200, 705, 870, 200, 702, 200, + + 200, 200, 200, 200, 200, 200, 703, 200, 704, 200, + 706, 871, 872, 200, 1367, 200, 873, 200, 1367, 200, + 200, 874, 705, 870, 200, 875, 200, 200, 200, 200, + 876, 200, 200, 1367, 200, 704, 200, 706, 871, 872, + 200, 707, 200, 873, 200, 200, 200, 200, 874, 200, + 708, 1367, 875, 1367, 200, 200, 200, 876, 877, 200, + 200, 200, 711, 200, 200, 200, 710, 200, 707, 200, + 200, 200, 200, 200, 200, 1367, 200, 708, 709, 1367, + 200, 200, 200, 200, 200, 877, 200, 200, 200, 711, + 200, 200, 200, 710, 878, 879, 200, 200, 200, 1367, + + 200, 200, 200, 880, 200, 709, 714, 200, 712, 200, + 200, 200, 881, 200, 200, 200, 200, 200, 882, 883, + 713, 878, 879, 884, 715, 200, 200, 200, 200, 200, + 880, 200, 200, 714, 1367, 712, 200, 200, 200, 881, + 200, 200, 200, 200, 885, 882, 883, 713, 200, 886, + 884, 715, 200, 200, 716, 200, 200, 887, 888, 200, + 717, 200, 1367, 889, 200, 200, 200, 890, 718, 200, + 200, 885, 891, 200, 1367, 200, 886, 719, 892, 200, + 200, 716, 893, 200, 887, 888, 1367, 717, 200, 200, + 889, 200, 1367, 200, 890, 718, 200, 200, 1367, 891, + + 200, 720, 721, 200, 719, 892, 200, 200, 200, 893, + 1367, 894, 200, 200, 200, 895, 200, 1367, 896, 200, + 1367, 1367, 897, 1367, 200, 200, 1367, 200, 720, 721, + 200, 1367, 200, 1367, 722, 200, 1367, 200, 894, 200, + 200, 200, 895, 200, 723, 896, 200, 724, 200, 897, + 200, 200, 200, 200, 200, 200, 998, 1367, 200, 200, + 200, 722, 200, 200, 200, 1367, 999, 1367, 200, 1367, + 200, 723, 1000, 725, 724, 200, 1001, 200, 200, 1367, + 200, 1002, 200, 998, 200, 200, 1003, 200, 200, 200, + 200, 1367, 200, 999, 200, 200, 200, 726, 727, 1000, + + 725, 1367, 200, 1001, 200, 200, 200, 1367, 1002, 1367, + 200, 200, 200, 1003, 1004, 200, 728, 1367, 729, 200, + 1005, 200, 200, 200, 726, 727, 200, 1367, 200, 200, + 730, 200, 731, 200, 200, 1006, 200, 200, 200, 200, + 200, 1004, 200, 728, 732, 729, 1007, 1005, 200, 200, + 200, 1367, 200, 200, 733, 200, 200, 730, 1367, 731, + 200, 200, 1006, 200, 200, 200, 200, 200, 1008, 200, + 1009, 732, 734, 1007, 1010, 200, 200, 200, 200, 200, + 735, 733, 200, 200, 200, 200, 1367, 200, 1011, 200, + 200, 200, 1367, 200, 200, 1008, 1367, 1009, 1012, 734, + + 737, 1010, 1367, 200, 200, 200, 200, 735, 200, 200, + 200, 200, 200, 200, 736, 1011, 200, 200, 200, 200, + 200, 200, 200, 738, 742, 1012, 200, 737, 1013, 200, + 1367, 200, 200, 200, 1367, 200, 1014, 200, 1015, 200, + 200, 736, 200, 739, 200, 200, 200, 200, 200, 200, + 738, 742, 1016, 200, 200, 1013, 200, 200, 200, 200, + 743, 200, 200, 1014, 200, 1015, 200, 200, 200, 200, + 739, 200, 745, 1367, 1017, 200, 1367, 200, 200, 1016, + 1018, 200, 1367, 1019, 200, 200, 1367, 743, 200, 200, + 1020, 200, 740, 200, 200, 200, 200, 200, 1367, 745, + + 200, 1017, 741, 200, 200, 200, 200, 1018, 1021, 744, + 1019, 1367, 1022, 200, 1367, 1367, 200, 1020, 200, 740, + 200, 200, 200, 200, 200, 200, 1023, 200, 200, 741, + 200, 200, 1024, 200, 746, 1021, 744, 1025, 200, 1022, + 200, 200, 747, 200, 1026, 200, 200, 1367, 200, 200, + 200, 1027, 200, 1023, 1367, 200, 200, 1028, 200, 1024, + 748, 746, 200, 1367, 1025, 200, 200, 200, 200, 747, + 1029, 1026, 200, 200, 200, 1367, 200, 200, 1027, 1367, + 749, 200, 1030, 200, 1028, 1367, 200, 748, 200, 200, + 200, 1031, 751, 200, 200, 750, 200, 1029, 1367, 200, + + 200, 200, 200, 200, 1367, 1032, 752, 749, 200, 1030, + 200, 1033, 200, 200, 1367, 200, 200, 200, 1031, 751, + 1367, 200, 750, 200, 1034, 200, 200, 200, 200, 200, + 756, 200, 1032, 752, 753, 200, 1367, 200, 1033, 200, + 200, 200, 1367, 200, 1037, 1038, 1367, 761, 200, 200, + 1367, 1034, 200, 200, 200, 200, 1367, 756, 200, 200, + 1039, 753, 200, 200, 759, 200, 1367, 200, 200, 754, + 200, 1037, 1038, 200, 761, 200, 200, 200, 1040, 1367, + 1041, 200, 1035, 200, 1042, 1036, 200, 1039, 755, 1043, + 200, 759, 200, 200, 1367, 1044, 754, 200, 1045, 1046, + + 200, 760, 200, 1367, 200, 1040, 200, 1041, 200, 1035, + 200, 1042, 1036, 200, 1047, 755, 1043, 1048, 200, 762, + 200, 757, 1044, 200, 1049, 1045, 1046, 1367, 760, 200, + 200, 1367, 200, 200, 758, 200, 1050, 200, 1051, 200, + 200, 1047, 200, 1367, 1048, 200, 762, 1367, 757, 1052, + 200, 1049, 1053, 1367, 763, 1367, 200, 200, 200, 200, + 1367, 758, 200, 1050, 200, 1051, 200, 200, 200, 200, + 200, 200, 1054, 765, 200, 1367, 1052, 200, 200, 1053, + 200, 763, 764, 1367, 766, 200, 200, 200, 1367, 200, + 200, 200, 1055, 1367, 200, 200, 200, 200, 200, 1054, + + 765, 200, 768, 1367, 200, 200, 200, 200, 200, 764, + 200, 766, 200, 200, 200, 767, 1056, 200, 200, 1055, + 200, 200, 200, 200, 770, 200, 200, 1057, 200, 768, + 200, 769, 1058, 200, 200, 200, 200, 200, 774, 200, + 200, 200, 767, 1056, 200, 200, 200, 200, 200, 200, + 200, 770, 200, 200, 1057, 200, 200, 200, 769, 1058, + 200, 200, 1059, 200, 1060, 774, 200, 200, 200, 771, + 200, 200, 200, 200, 200, 200, 200, 200, 1061, 200, + 200, 1062, 1063, 200, 1064, 200, 773, 200, 772, 1059, + 200, 1060, 200, 200, 200, 200, 771, 200, 1065, 200, + + 775, 200, 200, 200, 200, 1061, 200, 200, 1062, 1063, + 1367, 1064, 200, 773, 1367, 772, 200, 200, 200, 200, + 1066, 200, 200, 200, 776, 1065, 200, 775, 200, 1067, + 777, 200, 200, 1068, 200, 1069, 200, 200, 778, 1070, + 1071, 200, 200, 200, 1148, 200, 200, 1066, 1367, 1367, + 200, 776, 1367, 1367, 1367, 200, 1067, 777, 1367, 200, + 1068, 200, 1069, 200, 200, 778, 1070, 1071, 200, 200, + 200, 1148, 200, 200, 200, 781, 780, 200, 779, 200, + 200, 200, 200, 1149, 200, 200, 200, 1367, 1150, 1367, + 200, 1151, 1152, 1153, 1367, 200, 1367, 200, 1154, 200, + + 200, 200, 781, 780, 200, 779, 200, 200, 200, 200, + 1149, 200, 200, 200, 200, 1150, 782, 200, 1151, 1152, + 1153, 200, 200, 783, 200, 1154, 200, 200, 200, 1367, + 200, 1155, 784, 1367, 785, 1156, 1157, 200, 1158, 1367, + 1159, 200, 200, 782, 200, 1160, 1161, 1367, 200, 1367, + 783, 200, 1367, 200, 1162, 200, 200, 200, 1155, 784, + 200, 785, 1156, 1157, 200, 1158, 786, 1159, 787, 200, + 200, 200, 1160, 1161, 200, 1367, 200, 200, 789, 790, + 788, 1162, 200, 200, 200, 1367, 200, 200, 1163, 200, + 200, 1367, 200, 786, 1367, 787, 1367, 200, 1367, 1367, + + 1367, 200, 200, 200, 200, 789, 790, 788, 1367, 200, + 1164, 200, 792, 200, 1165, 1163, 200, 200, 200, 200, + 200, 200, 1166, 200, 200, 200, 200, 791, 200, 200, + 200, 200, 1367, 200, 1367, 793, 200, 1164, 1167, 792, + 1367, 1165, 1168, 1367, 1367, 200, 1367, 200, 200, 1166, + 200, 200, 200, 200, 791, 200, 1169, 200, 200, 200, + 200, 200, 793, 200, 1170, 1167, 200, 794, 200, 1168, + 795, 200, 1171, 797, 796, 200, 1367, 200, 1367, 200, + 200, 1172, 1367, 1169, 200, 1367, 200, 1367, 200, 200, + 1173, 1170, 1367, 200, 794, 200, 1367, 795, 200, 1171, + + 797, 796, 200, 200, 200, 200, 200, 200, 1172, 798, + 200, 200, 200, 1174, 200, 200, 200, 1173, 899, 200, + 1367, 200, 1175, 200, 200, 1367, 1367, 900, 200, 1367, + 200, 1176, 200, 200, 1367, 1367, 798, 200, 1367, 200, + 1174, 200, 200, 200, 1367, 899, 200, 200, 200, 1175, + 200, 200, 200, 200, 900, 200, 200, 1177, 1176, 200, + 200, 904, 200, 901, 1178, 200, 200, 1179, 1180, 200, + 200, 200, 902, 1181, 200, 200, 1367, 905, 903, 200, + 200, 200, 1367, 200, 1177, 200, 200, 200, 904, 200, + 901, 1178, 200, 200, 1179, 1180, 200, 200, 200, 902, + + 1181, 1182, 200, 907, 905, 903, 1367, 200, 200, 200, + 1367, 906, 200, 200, 200, 200, 200, 1183, 1367, 200, + 1367, 200, 1367, 200, 200, 200, 1184, 1185, 1182, 1186, + 907, 1187, 1367, 908, 200, 200, 200, 200, 906, 1188, + 200, 200, 200, 200, 1183, 200, 200, 200, 200, 200, + 200, 1189, 200, 1184, 1185, 200, 1186, 200, 1187, 200, + 908, 1190, 200, 200, 200, 200, 1188, 909, 200, 200, + 1367, 200, 200, 1191, 200, 200, 200, 1192, 1189, 200, + 1367, 200, 200, 1240, 200, 200, 200, 1242, 1190, 200, + 200, 200, 200, 910, 909, 200, 200, 200, 200, 1243, + + 1191, 911, 200, 1244, 1192, 200, 200, 200, 200, 1367, + 1240, 200, 200, 1367, 1242, 200, 200, 200, 200, 1367, + 910, 200, 200, 200, 200, 200, 1243, 200, 911, 200, + 1244, 200, 200, 200, 200, 200, 912, 1245, 200, 200, + 913, 200, 200, 200, 200, 200, 914, 1246, 200, 915, + 200, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, + 200, 200, 200, 912, 1245, 200, 200, 913, 200, 200, + 200, 200, 200, 914, 1246, 200, 915, 1367, 200, 200, + 200, 200, 917, 1367, 200, 200, 200, 200, 200, 200, + 916, 924, 200, 1247, 200, 200, 200, 200, 200, 1367, + + 1248, 1367, 200, 200, 918, 200, 200, 200, 200, 917, + 200, 200, 200, 1249, 200, 200, 200, 916, 924, 1367, + 1247, 200, 200, 1250, 200, 1251, 200, 1248, 200, 1252, + 200, 918, 200, 200, 200, 919, 1253, 200, 200, 200, + 1249, 200, 200, 1254, 1367, 1255, 200, 920, 1256, 1367, + 1250, 200, 1251, 200, 1367, 200, 1252, 1367, 921, 1367, + 200, 1257, 919, 1253, 1258, 200, 200, 1259, 200, 200, + 1254, 200, 1255, 200, 920, 1256, 200, 200, 200, 200, + 1367, 200, 1260, 922, 200, 921, 923, 1261, 1257, 200, + 1262, 1258, 1367, 1367, 1259, 200, 200, 200, 200, 1367, + + 1288, 1290, 200, 200, 200, 1291, 200, 200, 200, 1260, + 922, 200, 1367, 923, 1261, 1292, 200, 1262, 925, 200, + 200, 200, 200, 1293, 200, 200, 200, 1288, 1290, 200, + 200, 200, 1291, 1294, 200, 1241, 1241, 200, 1367, 200, + 1295, 1296, 1292, 1367, 200, 925, 200, 200, 200, 200, + 1293, 1297, 200, 200, 1367, 926, 1298, 200, 200, 1299, + 1294, 1300, 1367, 200, 200, 200, 200, 1295, 1296, 1317, + 200, 200, 1318, 1289, 1319, 200, 200, 200, 1297, 200, + 1367, 927, 926, 1298, 200, 1367, 1299, 1367, 1300, 200, + 200, 200, 200, 200, 1367, 928, 1317, 200, 200, 1318, + + 1289, 1319, 200, 200, 200, 200, 200, 200, 927, 1320, + 1367, 200, 200, 1321, 929, 1367, 200, 200, 200, 200, + 200, 200, 928, 1367, 931, 200, 200, 930, 1367, 1324, + 200, 200, 200, 1367, 200, 200, 1320, 200, 1367, 200, + 1321, 929, 200, 1331, 200, 933, 200, 200, 200, 200, + 932, 931, 1367, 200, 930, 200, 1324, 1332, 200, 1316, + 1316, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, + 1331, 200, 933, 200, 200, 200, 200, 932, 1367, 200, + 1335, 200, 200, 200, 1332, 1338, 1367, 1340, 200, 200, + 200, 200, 200, 200, 934, 200, 1367, 200, 200, 200, + + 200, 1330, 200, 935, 1367, 200, 200, 1335, 200, 936, + 200, 1342, 1338, 200, 1340, 200, 200, 1344, 200, 937, + 200, 934, 1367, 200, 200, 200, 200, 200, 1330, 1346, + 935, 200, 200, 200, 1367, 200, 936, 1348, 1342, 1350, + 200, 200, 200, 200, 1344, 200, 937, 1352, 1367, 200, + 200, 200, 200, 938, 200, 200, 1346, 200, 200, 1367, + 200, 200, 200, 1354, 1348, 200, 1350, 200, 200, 1367, + 200, 1356, 200, 1367, 1352, 200, 200, 200, 200, 200, + 938, 1358, 200, 200, 200, 200, 939, 200, 200, 200, + 1354, 940, 200, 200, 200, 200, 200, 1367, 1356, 1323, + + 1316, 200, 200, 200, 200, 1367, 200, 1360, 1358, 1367, + 200, 942, 200, 939, 200, 200, 200, 200, 940, 200, + 200, 200, 200, 200, 200, 200, 1367, 200, 200, 200, + 200, 200, 941, 200, 1360, 200, 1367, 200, 942, 1367, + 200, 1334, 200, 1367, 200, 944, 200, 1367, 200, 1367, + 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 941, + 200, 1367, 200, 200, 200, 1367, 943, 200, 1334, 200, + 1367, 200, 944, 200, 1367, 945, 200, 1367, 1367, 1367, + 200, 200, 1265, 1241, 200, 200, 1367, 200, 1367, 1367, + 200, 946, 200, 943, 1367, 1367, 200, 200, 200, 200, + + 200, 200, 945, 200, 1367, 1367, 200, 1367, 200, 1367, + 1367, 200, 200, 1367, 200, 1367, 1367, 1367, 946, 200, + 1303, 1367, 1367, 1367, 200, 947, 200, 949, 200, 200, + 200, 1367, 200, 200, 200, 1367, 948, 200, 200, 200, + 1367, 200, 200, 200, 1367, 1367, 1367, 1303, 200, 1367, + 1367, 1367, 947, 200, 949, 1367, 200, 200, 1367, 200, + 200, 200, 200, 948, 200, 1367, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, + 200, 200, 950, 200, 1367, 1367, 200, 200, 1367, 200, + 200, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 200, + + 200, 200, 200, 200, 951, 200, 200, 1367, 200, 950, + 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, + 1367, 1367, 952, 1367, 200, 1367, 200, 1367, 1367, 200, + 200, 951, 200, 200, 200, 953, 1367, 1367, 200, 200, + 200, 1367, 200, 200, 200, 200, 200, 1367, 1367, 952, + 200, 954, 955, 200, 956, 200, 200, 200, 200, 200, + 200, 200, 953, 1367, 1367, 200, 200, 200, 1367, 200, + 200, 200, 200, 200, 1367, 1367, 1367, 200, 954, 955, + 1367, 956, 200, 200, 200, 200, 200, 200, 1367, 200, + 957, 200, 200, 958, 200, 1367, 200, 200, 200, 200, + + 959, 1367, 200, 200, 200, 975, 200, 1367, 1367, 200, + 200, 200, 200, 200, 200, 200, 200, 957, 200, 1367, + 958, 200, 200, 200, 960, 200, 200, 959, 200, 200, + 200, 200, 975, 200, 200, 1367, 200, 200, 1367, 200, + 1367, 200, 200, 200, 200, 1367, 1367, 200, 1367, 200, + 1367, 960, 1367, 200, 1367, 200, 961, 978, 1367, 200, + 1367, 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, + 200, 200, 200, 1367, 200, 962, 1367, 200, 1367, 1367, + 200, 200, 200, 961, 978, 1367, 200, 200, 1367, 200, + 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, + + 1367, 1367, 962, 200, 200, 1367, 200, 200, 200, 200, + 964, 963, 1367, 200, 200, 200, 200, 1367, 1367, 200, + 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, + 200, 1367, 1367, 200, 200, 200, 1367, 964, 963, 1367, + 200, 965, 200, 200, 1367, 200, 200, 1367, 1367, 1367, + 200, 200, 200, 200, 1367, 966, 967, 1367, 1367, 200, + 200, 200, 200, 200, 200, 1367, 1367, 1367, 965, 200, + 200, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 200, + 200, 1367, 966, 967, 1367, 968, 200, 200, 200, 200, + 200, 200, 1367, 1367, 200, 200, 200, 200, 200, 1367, + + 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, + 1367, 1367, 968, 200, 200, 1367, 200, 200, 1367, 1367, + 1367, 200, 200, 200, 1367, 200, 969, 1367, 1367, 1367, + 1367, 200, 200, 200, 1367, 200, 1367, 1367, 200, 200, + 200, 200, 200, 970, 200, 200, 1367, 1367, 200, 1367, + 200, 971, 1367, 969, 1367, 200, 1367, 1367, 200, 1367, + 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 200, + 970, 200, 200, 973, 200, 200, 200, 200, 971, 972, + 200, 1367, 200, 1367, 200, 200, 200, 200, 1367, 200, + 1367, 200, 1367, 200, 200, 200, 200, 974, 200, 200, + + 973, 200, 1367, 200, 200, 1367, 972, 200, 1367, 200, + 1367, 200, 1367, 200, 200, 977, 200, 1367, 976, 200, + 200, 1367, 1367, 200, 974, 200, 200, 200, 200, 200, + 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 200, + 1367, 1367, 977, 200, 1367, 976, 200, 979, 200, 1367, + 1367, 200, 200, 200, 200, 200, 200, 200, 1367, 200, + 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, + 200, 1367, 981, 980, 979, 200, 200, 200, 200, 200, + 200, 200, 200, 1367, 200, 1367, 1367, 982, 1367, 200, + 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 981, + + 980, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, + 1367, 200, 1367, 200, 982, 1367, 200, 200, 200, 200, + 1367, 1367, 200, 200, 200, 200, 1367, 200, 200, 200, + 1367, 200, 983, 200, 1367, 1367, 984, 200, 200, 1367, + 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, + 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 983, + 200, 1367, 200, 984, 200, 985, 1367, 200, 200, 1367, + 1367, 200, 1367, 200, 200, 992, 200, 1367, 200, 200, + 986, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, + 1367, 1367, 985, 1367, 200, 200, 1367, 200, 200, 987, + + 200, 200, 992, 200, 200, 200, 200, 986, 200, 200, + 200, 1367, 200, 200, 1367, 1367, 200, 1367, 200, 989, + 1367, 1367, 200, 200, 200, 988, 987, 200, 200, 200, + 200, 200, 200, 1367, 200, 990, 200, 200, 1367, 200, + 1367, 1367, 200, 200, 1367, 200, 989, 1367, 1367, 1367, + 200, 1367, 988, 991, 200, 200, 200, 200, 200, 200, + 200, 200, 990, 200, 200, 200, 200, 200, 200, 200, + 200, 993, 200, 200, 1367, 1367, 1367, 1367, 200, 1367, + 991, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 1367, + 200, 1367, 200, 1367, 200, 200, 1367, 200, 993, 200, + + 200, 1367, 200, 200, 995, 200, 200, 200, 200, 1367, + 200, 1367, 200, 200, 200, 200, 200, 1367, 994, 1367, + 200, 1367, 200, 200, 200, 200, 200, 200, 1367, 200, + 200, 995, 996, 200, 200, 200, 200, 200, 1367, 200, + 200, 200, 1367, 200, 1367, 994, 1367, 200, 1367, 200, + 200, 200, 200, 200, 200, 200, 1367, 200, 200, 996, + 200, 1367, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 1367, 200, 1367, 1367, 200, 1367, 200, 1367, + 1073, 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, + 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 1367, + + 200, 1367, 1074, 200, 1367, 200, 200, 1073, 200, 1367, + 200, 1075, 200, 1367, 200, 200, 1367, 1367, 1367, 1367, + 200, 200, 200, 1367, 1367, 1367, 1367, 1367, 1367, 1074, + 200, 200, 1367, 200, 1367, 1367, 200, 200, 1075, 200, + 200, 200, 200, 1367, 1367, 1367, 200, 200, 200, 200, + 1367, 1076, 1367, 1367, 1078, 200, 200, 200, 200, 200, + 1077, 1367, 1367, 200, 200, 200, 1367, 200, 200, 1367, + 1367, 1367, 1367, 200, 200, 200, 1367, 1367, 1076, 1367, + 1367, 1078, 200, 200, 200, 1367, 200, 1077, 1079, 1367, + 200, 200, 200, 1367, 200, 200, 200, 200, 1080, 200, + + 200, 200, 200, 200, 200, 1081, 1367, 1367, 200, 200, + 200, 200, 1367, 1367, 1367, 1079, 1367, 200, 200, 1367, + 1367, 200, 200, 200, 200, 1080, 200, 200, 1082, 1367, + 200, 200, 1081, 1367, 1367, 200, 200, 200, 200, 1367, + 1083, 200, 200, 1084, 200, 200, 200, 1367, 200, 200, + 200, 1367, 200, 200, 200, 1082, 1367, 1367, 1085, 1367, + 200, 1367, 200, 1367, 200, 200, 1367, 1083, 200, 200, + 1084, 200, 200, 200, 200, 200, 200, 200, 1367, 200, + 200, 200, 1086, 1367, 1367, 1085, 1087, 200, 1367, 200, + 200, 200, 200, 1367, 200, 1088, 1367, 200, 1367, 200, + + 200, 200, 200, 200, 1367, 1367, 1367, 200, 1089, 1086, + 200, 1367, 200, 1087, 1367, 1367, 200, 200, 200, 200, + 200, 200, 1088, 1367, 200, 1367, 200, 200, 200, 200, + 1367, 1367, 1367, 1367, 200, 1089, 200, 200, 200, 200, + 1367, 1367, 1090, 200, 1367, 200, 200, 200, 200, 1367, + 200, 1367, 200, 200, 1092, 200, 200, 1367, 200, 200, + 1367, 1091, 1367, 200, 200, 200, 200, 1367, 1367, 1090, + 1093, 1367, 200, 200, 200, 200, 1094, 200, 1367, 200, + 200, 1092, 200, 200, 1367, 200, 200, 1367, 1091, 1367, + 200, 200, 200, 200, 1095, 1367, 200, 1093, 200, 200, + + 200, 200, 1367, 1094, 200, 1367, 200, 200, 1367, 200, + 1367, 1096, 1367, 1367, 200, 1367, 200, 200, 1367, 200, + 200, 1095, 1367, 200, 200, 200, 1367, 200, 1367, 1367, + 200, 200, 200, 200, 200, 1097, 1367, 1367, 1096, 1098, + 200, 200, 1367, 200, 200, 200, 1100, 200, 200, 1099, + 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, + 200, 200, 1097, 1367, 1367, 200, 1098, 200, 200, 1367, + 200, 200, 200, 1100, 200, 200, 1099, 200, 200, 200, + 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, + 200, 1102, 200, 200, 200, 200, 200, 200, 1367, 200, + + 1104, 200, 200, 1367, 1101, 200, 200, 200, 1367, 200, + 1367, 200, 200, 200, 1367, 200, 200, 200, 1102, 200, + 200, 200, 1367, 200, 1367, 200, 200, 1104, 1367, 200, + 1103, 1101, 1367, 200, 200, 200, 200, 1367, 200, 200, + 200, 200, 200, 200, 1106, 1105, 200, 1367, 200, 200, + 200, 200, 200, 200, 1367, 1367, 200, 1103, 1367, 1367, + 1367, 200, 200, 1367, 1367, 200, 1367, 200, 200, 1367, + 200, 1106, 1105, 1367, 1367, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 1107, 200, 200, 200, 200, 200, 1367, 200, 1367, 1367, + + 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 200, 200, + 1367, 200, 200, 200, 200, 1367, 200, 1107, 200, 200, + 200, 200, 200, 200, 200, 200, 1367, 200, 1367, 1109, + 200, 1108, 200, 200, 200, 200, 200, 1367, 1367, 200, + 1367, 1110, 1367, 1367, 1111, 1367, 200, 1367, 1367, 200, + 200, 1367, 200, 1367, 1367, 1367, 1109, 200, 1108, 1367, + 200, 200, 200, 200, 1367, 1112, 200, 200, 1110, 1367, + 1367, 1111, 200, 200, 1367, 1367, 200, 200, 200, 200, + 200, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, 1367, + 200, 200, 1112, 1367, 200, 1367, 1367, 1367, 1367, 200, + + 1367, 1113, 1367, 1367, 200, 200, 200, 200, 200, 200, + 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, + 200, 200, 200, 200, 1367, 200, 1367, 200, 1113, 1367, + 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, 1367, + 1367, 1114, 1367, 200, 1367, 200, 1367, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1116, 200, 1367, 200, + 1115, 200, 200, 1367, 1367, 200, 1367, 200, 1114, 200, + 1367, 1367, 200, 1367, 200, 1367, 1367, 1367, 200, 200, + 200, 1367, 200, 1116, 1367, 1367, 1367, 1115, 200, 1367, + 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 1117, + + 200, 200, 200, 200, 1367, 1118, 200, 200, 1119, 200, + 1367, 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, + 200, 200, 1367, 1367, 1367, 200, 1117, 200, 1367, 200, + 200, 1367, 1118, 1367, 200, 1119, 200, 1367, 200, 200, + 200, 1367, 200, 200, 200, 1120, 200, 200, 200, 200, + 1367, 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, + 200, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, + 200, 200, 1120, 200, 200, 1121, 200, 1367, 200, 200, + 200, 1367, 200, 200, 1122, 200, 200, 200, 1367, 200, + 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1123, + + 1367, 1367, 1121, 1367, 1367, 200, 200, 200, 1367, 1367, + 1367, 1122, 200, 200, 200, 200, 200, 200, 200, 200, + 1367, 1367, 200, 200, 200, 200, 1123, 1124, 1367, 1367, + 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1125, + 1126, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, + 200, 200, 200, 200, 1124, 1367, 1367, 1127, 1367, 200, + 200, 200, 200, 200, 1128, 200, 1125, 1126, 200, 200, + 200, 200, 200, 200, 1367, 200, 200, 200, 200, 1367, + 200, 1367, 1367, 1367, 1127, 200, 200, 200, 200, 1129, + 200, 1128, 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 1367, 200, 200, 200, 200, 1130, 200, 1367, 1131, + 1367, 200, 200, 200, 200, 200, 1129, 200, 1367, 200, + 200, 200, 200, 200, 200, 200, 1132, 200, 1367, 200, + 200, 200, 200, 1130, 200, 1367, 1131, 1367, 200, 200, + 200, 200, 200, 1367, 200, 1367, 200, 1133, 200, 200, + 200, 1367, 200, 1132, 200, 1367, 200, 1134, 200, 200, + 200, 200, 200, 1367, 1367, 200, 200, 1135, 200, 200, + 1367, 200, 200, 1367, 1133, 200, 1367, 1367, 1367, 200, + 1367, 200, 1367, 1367, 1134, 200, 1367, 200, 200, 200, + 1367, 1367, 200, 1367, 1135, 200, 1367, 1367, 200, 200, + + 200, 1367, 200, 200, 1367, 200, 1136, 200, 200, 1367, + 200, 1137, 200, 1138, 1367, 200, 200, 1367, 1140, 1367, + 1367, 1367, 1367, 200, 200, 1367, 200, 200, 200, 200, + 200, 200, 200, 1136, 200, 1367, 200, 200, 1137, 200, + 1138, 1139, 200, 200, 1367, 1140, 1367, 1367, 1367, 1367, + 200, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, + 200, 1367, 200, 200, 200, 1141, 1367, 200, 1139, 200, + 1143, 1367, 200, 1367, 200, 200, 1367, 1142, 200, 200, + 200, 200, 200, 1367, 1367, 200, 200, 200, 200, 200, + 200, 200, 1141, 1367, 200, 1367, 200, 1143, 200, 200, + + 1367, 200, 200, 1367, 1142, 200, 200, 200, 1367, 200, + 200, 200, 200, 200, 1367, 200, 200, 200, 1144, 1367, + 1367, 1145, 1367, 200, 1367, 200, 200, 1367, 1367, 1367, + 1367, 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, + 200, 1367, 1367, 200, 200, 1144, 1367, 1146, 1145, 1367, + 200, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, + 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, + 200, 200, 1367, 1367, 1146, 1367, 200, 1367, 200, 1367, + 1367, 1367, 200, 200, 200, 200, 1194, 200, 200, 200, + 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 1367, + + 200, 200, 1195, 200, 1367, 200, 200, 200, 1367, 1367, + 200, 200, 200, 1194, 200, 200, 200, 200, 200, 1367, + 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1195, + 200, 1367, 1196, 200, 200, 1367, 1197, 200, 200, 200, + 200, 200, 200, 200, 1367, 200, 200, 1367, 200, 200, + 1367, 1367, 1367, 200, 1367, 200, 200, 200, 1367, 1196, + 1198, 1367, 1367, 1197, 200, 200, 1367, 200, 200, 200, + 200, 1367, 200, 200, 1367, 1199, 200, 200, 1367, 200, + 200, 1367, 200, 200, 200, 1367, 1200, 1198, 200, 200, + 1367, 1367, 200, 200, 1367, 200, 1367, 200, 200, 1367, + + 1367, 1367, 1199, 1367, 200, 1367, 200, 200, 1367, 1367, + 200, 200, 200, 1200, 1367, 200, 200, 200, 1367, 200, + 200, 200, 200, 1367, 1367, 200, 200, 1201, 200, 1202, + 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, + 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 200, + 1203, 1367, 1367, 200, 1201, 200, 1202, 200, 200, 200, + 1367, 200, 200, 1204, 1367, 200, 200, 200, 1367, 1367, + 200, 200, 200, 1367, 200, 200, 1367, 1203, 1367, 200, + 1205, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 1367, + 1204, 1367, 200, 200, 1367, 1367, 1367, 200, 200, 200, + + 1367, 200, 200, 200, 1206, 200, 200, 1205, 1367, 1367, + 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, + 1367, 200, 1367, 1367, 200, 1367, 200, 1367, 1367, 200, + 200, 1206, 200, 1367, 1367, 1367, 1207, 200, 1367, 1367, + 1367, 200, 200, 200, 200, 200, 200, 200, 200, 1367, + 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 200, + 200, 1208, 1367, 1207, 1367, 200, 200, 1367, 1367, 1367, + 200, 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 200, + 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1208, 200, + 1367, 200, 200, 200, 1367, 1209, 200, 200, 200, 200, + + 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, + 1367, 1367, 200, 1367, 200, 200, 200, 1367, 200, 1367, + 1367, 1367, 1209, 200, 200, 1367, 200, 200, 200, 200, + 1367, 200, 200, 1367, 200, 200, 200, 1367, 1210, 200, + 200, 200, 200, 200, 1212, 200, 1367, 200, 200, 1367, + 200, 200, 200, 1211, 200, 1367, 1213, 200, 1367, 1367, + 200, 200, 1367, 200, 1367, 1210, 200, 200, 1367, 1367, + 200, 1212, 200, 1367, 200, 200, 1367, 200, 1367, 200, + 1211, 200, 1367, 1213, 200, 1367, 1367, 200, 200, 200, + 200, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, + + 200, 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, + 200, 1367, 1367, 1367, 1367, 1367, 200, 200, 200, 200, + 1367, 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, + 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 1367, + 200, 200, 200, 200, 1367, 1367, 200, 200, 1367, 1367, + 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 1367, + 200, 200, 1367, 200, 1367, 200, 1367, 200, 200, 200, + 200, 1367, 1367, 200, 200, 200, 1215, 200, 1367, 200, + 200, 1214, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, + 200, 1216, 1367, 1367, 200, 200, 200, 1367, 1367, 200, + + 200, 1367, 200, 1215, 200, 200, 1367, 200, 1214, 200, + 200, 1367, 1367, 200, 200, 200, 1367, 200, 1216, 1367, + 200, 200, 200, 200, 200, 1367, 200, 200, 1367, 200, + 200, 200, 200, 1367, 1367, 1367, 1217, 200, 1367, 1367, + 200, 200, 200, 200, 1367, 200, 1367, 200, 1367, 1367, + 200, 200, 1218, 1367, 200, 200, 200, 200, 200, 200, + 1367, 1367, 1367, 1217, 200, 1367, 1367, 200, 200, 1367, + 200, 200, 200, 200, 1219, 1367, 1367, 200, 200, 1218, + 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, 1367, + 1367, 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, + + 200, 1219, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, + 200, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, + 200, 1220, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, + 1221, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1222, + 200, 1367, 200, 200, 1367, 200, 200, 200, 1220, 200, + 1223, 1225, 200, 200, 200, 200, 200, 1221, 1367, 1367, + 200, 200, 200, 200, 200, 1367, 1222, 1367, 200, 1367, + 200, 1367, 200, 200, 200, 1367, 200, 1223, 1225, 1367, + 1367, 200, 200, 200, 1224, 1367, 1367, 200, 200, 1226, + 1367, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, + + 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, + 200, 1224, 1367, 1227, 1367, 1367, 1226, 1367, 1367, 200, + 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, + 1367, 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, + 1227, 1367, 1367, 1228, 1367, 200, 1367, 200, 200, 200, + 1367, 200, 1229, 1367, 1367, 1367, 200, 200, 1367, 1367, + 1367, 200, 1367, 200, 200, 200, 200, 1367, 1367, 1367, + 1228, 200, 200, 1367, 200, 200, 200, 1367, 200, 1229, + 1230, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, + 200, 200, 1367, 200, 200, 1367, 1367, 1367, 200, 200, + + 1367, 1367, 1367, 200, 1367, 200, 1231, 1230, 200, 1367, + 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, + 200, 200, 200, 1232, 1367, 1367, 200, 200, 1367, 1367, + 1367, 1367, 200, 1231, 200, 200, 200, 1367, 1367, 1367, + 200, 200, 1233, 1367, 1367, 200, 200, 200, 1367, 200, + 1232, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, + 200, 200, 1367, 200, 1367, 200, 1367, 1234, 200, 1233, + 1367, 1367, 1367, 200, 1367, 1367, 200, 200, 200, 200, + 200, 1367, 200, 200, 200, 1235, 1367, 200, 200, 200, + 1367, 1367, 200, 1367, 1234, 1367, 1367, 1367, 1367, 1236, + + 1367, 1367, 1367, 200, 200, 200, 200, 200, 1367, 200, + 200, 200, 1235, 1367, 200, 200, 200, 1367, 200, 200, + 200, 200, 1367, 200, 1367, 200, 1236, 1367, 200, 1367, + 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, + 1367, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, + 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, + 1238, 200, 200, 1237, 200, 1367, 200, 200, 200, 200, + 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, 1367, + 200, 1367, 1367, 200, 200, 1367, 200, 1238, 1367, 200, + + 1237, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, + 200, 200, 1367, 200, 1367, 1367, 200, 1264, 1367, 1367, + 1367, 200, 200, 1367, 200, 1367, 1367, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, + 200, 200, 200, 200, 1264, 200, 1265, 1241, 200, 1367, + 1367, 200, 200, 1367, 200, 1367, 1266, 1367, 1367, 200, + 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, + 1367, 200, 200, 1367, 1367, 200, 200, 1367, 200, 200, + 1367, 200, 1267, 1266, 1367, 200, 200, 200, 200, 200, + + 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, + 200, 1367, 200, 200, 200, 200, 200, 1367, 200, 1267, + 200, 1367, 200, 200, 1367, 1268, 200, 200, 200, 200, + 200, 1367, 200, 200, 200, 200, 1367, 200, 200, 1367, + 1367, 200, 200, 200, 200, 200, 200, 200, 1271, 1269, + 1367, 1367, 1268, 200, 200, 1367, 200, 200, 200, 200, + 1367, 200, 200, 200, 200, 200, 1270, 1367, 200, 200, + 1367, 200, 200, 200, 200, 1271, 1269, 1367, 200, 200, + 200, 200, 200, 1367, 200, 200, 200, 200, 200, 200, + 200, 200, 1367, 1270, 200, 200, 200, 1367, 200, 200, + + 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, 200, + 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, + 200, 200, 1367, 1367, 200, 200, 200, 200, 1273, 200, + 200, 200, 1272, 1367, 1367, 200, 1367, 200, 1367, 1367, + 200, 200, 1367, 200, 200, 1367, 200, 200, 200, 1367, + 1367, 200, 1367, 200, 1367, 1273, 200, 200, 1367, 1272, + 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, 1367, + 200, 200, 200, 1367, 200, 200, 200, 1275, 1367, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1367, 1274, + 200, 200, 1276, 200, 1367, 200, 1367, 200, 200, 200, + + 1367, 200, 200, 200, 1275, 1367, 200, 1367, 200, 200, + 200, 200, 200, 200, 200, 1367, 1274, 200, 200, 1276, + 1277, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, + 200, 1367, 200, 200, 200, 1367, 1367, 1367, 1367, 200, + 1367, 1367, 1278, 1367, 200, 200, 1367, 1277, 200, 1367, + 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 200, + 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, 1278, + 1367, 200, 200, 1279, 1367, 1367, 1367, 200, 200, 1367, + 200, 1367, 1367, 1280, 200, 200, 200, 1367, 1367, 1367, + 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, + + 1279, 1367, 200, 1367, 200, 1367, 1367, 200, 1367, 1367, + 1280, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, + 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1367, 200, 1281, 200, 200, 1367, 200, 1367, 1367, + 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, + 1282, 200, 200, 200, 200, 200, 200, 200, 1367, 200, + 1281, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 1283, + 200, 200, 1367, 200, 200, 200, 200, 1282, 200, 1367, + 200, 200, 1284, 200, 1285, 1367, 200, 1367, 200, 1367, + 1367, 1367, 1367, 1367, 200, 200, 1283, 200, 1367, 1367, + + 1367, 200, 200, 200, 200, 1367, 1286, 200, 200, 1284, + 200, 1285, 1367, 200, 200, 200, 200, 1367, 200, 200, + 1367, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, + 1367, 200, 200, 1286, 200, 1367, 200, 200, 1367, 200, + 1367, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, + 200, 200, 200, 200, 200, 1367, 200, 1302, 200, 200, + 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, + 200, 200, 200, 1304, 200, 200, 200, 1367, 200, 200, + 200, 200, 200, 1367, 1302, 200, 1367, 1367, 1367, 200, + 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, + + 1304, 200, 1367, 200, 200, 200, 200, 200, 1305, 200, + 200, 1367, 1367, 1367, 200, 1367, 200, 200, 1367, 200, + 1367, 200, 1367, 1367, 200, 200, 200, 1367, 200, 1367, + 1367, 200, 200, 200, 200, 1305, 200, 200, 1367, 1306, + 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1367, 1367, + 200, 200, 200, 200, 200, 200, 1367, 1367, 1367, 200, + 200, 200, 1367, 200, 1367, 1367, 1306, 1367, 1367, 200, + 200, 200, 200, 1367, 1367, 1367, 200, 200, 1367, 200, + 1367, 200, 200, 1309, 200, 1307, 1308, 200, 200, 1367, + 200, 200, 200, 1367, 1310, 200, 200, 200, 200, 200, + + 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, 200, + 1309, 200, 1307, 1308, 200, 200, 200, 200, 200, 200, + 200, 1310, 200, 200, 200, 200, 200, 200, 200, 200, + 1367, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, + 1367, 200, 200, 200, 200, 1367, 1367, 200, 200, 200, + 1367, 200, 1367, 200, 1367, 200, 200, 1367, 1311, 1367, + 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, + 200, 200, 200, 200, 1313, 200, 200, 200, 200, 1312, + 200, 1314, 200, 200, 1367, 1311, 200, 1367, 200, 1367, + 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, 200, + + 200, 1313, 200, 1367, 200, 200, 1312, 200, 1314, 200, + 200, 1323, 1316, 200, 1325, 200, 1367, 200, 200, 200, + 200, 1367, 200, 200, 200, 1367, 200, 200, 1367, 200, + 1367, 1367, 200, 200, 200, 1367, 200, 1367, 1367, 1367, + 200, 1325, 200, 200, 1367, 200, 200, 1367, 1367, 200, + 200, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, + 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, 200, + 200, 1326, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1367, 200, 200, 200, 1327, 1367, 200, 1367, 1367, + 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 1326, 200, + + 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 1327, 1367, 200, 200, 200, 200, 200, 1367, + 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, + 200, 1328, 1367, 200, 200, 200, 200, 200, 200, 200, + 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1367, 200, 200, 200, 200, 200, 200, 1328, 1367, + 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, + 200, 200, 1367, 200, 200, 200, 200, 1336, 1367, 1367, + 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, 1367, + 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 1367, + + 1367, 200, 200, 1367, 1336, 1367, 1367, 200, 1367, 200, + 1367, 200, 1367, 200, 200, 1367, 1367, 200, 200, 1367, + 1367, 1367, 1367, 200, 46, 46, 46, 46, 46, 88, + 1367, 1367, 88, 88, 185, 185, 185, 1367, 185, 187, + 1367, 187, 187, 187, 190, 1367, 190, 190, 190, 200, + 1367, 200, 200, 200, 7, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367 } ; -static const flex_int16_t yy_chk[9157] = +static const flex_int16_t yy_chk[9032] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2131,993 +2110,980 @@ static const flex_int16_t yy_chk[9157] = 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 27, 28, 22, 23, 30, 21, - 27, 21, 22, 28, 23, 21, 21, 31, 37, 28, + 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, - 45, 23, 22, 1392, 23, 50, 50, 23, 21, 22, + 41, 23, 22, 41, 23, 1370, 44, 23, 21, 22, 21, 27, 28, 22, 23, 30, 21, 27, 21, 22, - 28, 23, 21, 21, 31, 37, 28, 45, 23, 22, - 42, 23, 24, 1386, 23, 25, 24, 25, 42, 56, - 24, 32, 25, 101, 33, 32, 24, 25, 33, 24, - 56, 32, 51, 51, 33, 43, 43, 42, 1385, 24, - 59, 59, 25, 24, 25, 42, 34, 24, 32, 25, - 101, 33, 32, 24, 25, 33, 24, 26, 32, 36, - 34, 33, 43, 43, 102, 26, 34, 34, 26, 105, - 36, 26, 29, 34, 26, 1384, 36, 26, 29, 29, - - 29, 88, 88, 1383, 26, 29, 36, 34, 191, 191, - 1381, 102, 26, 34, 34, 26, 105, 36, 26, 29, - 1379, 26, 35, 36, 26, 29, 29, 29, 103, 106, - 35, 38, 29, 108, 35, 38, 103, 35, 35, 38, - 104, 109, 41, 104, 41, 38, 1377, 41, 1375, 35, - 1171, 1171, 112, 115, 1373, 103, 106, 35, 38, 1371, - 108, 35, 38, 103, 35, 35, 38, 104, 109, 41, - 104, 41, 38, 39, 41, 39, 1369, 111, 39, 112, - 115, 39, 1367, 39, 111, 39, 39, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 1365, 116, 114, - - 39, 1363, 39, 116, 111, 39, 107, 107, 39, 114, - 39, 111, 39, 39, 40, 118, 118, 68, 40, 68, - 107, 40, 40, 68, 68, 116, 114, 119, 40, 68, - 116, 40, 1361, 107, 107, 1359, 114, 1308, 1308, 1355, - 1351, 40, 118, 118, 68, 40, 68, 107, 40, 40, - 68, 68, 120, 1344, 119, 40, 68, 1337, 40, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 62, 62, 121, 62, 62, 62, 62, 62, 62, 120, - 69, 123, 1322, 1307, 69, 1282, 122, 122, 69, 62, - 62, 62, 71, 125, 69, 62, 71, 62, 126, 121, - - 127, 1257, 71, 62, 69, 62, 129, 69, 123, 62, - 62, 69, 71, 122, 122, 69, 130, 131, 1210, 71, - 125, 69, 62, 71, 62, 126, 1163, 127, 128, 71, - 62, 69, 62, 129, 128, 1087, 62, 62, 1011, 71, - 910, 809, 679, 130, 131, 62, 63, 63, 132, 63, - 63, 63, 63, 63, 63, 128, 549, 134, 72, 73, - 74, 128, 72, 73, 74, 63, 63, 63, 72, 73, - 74, 133, 63, 85, 133, 132, 63, 85, 72, 73, - 74, 135, 63, 85, 134, 72, 73, 74, 137, 72, - 73, 74, 63, 85, 421, 72, 73, 74, 133, 63, - - 85, 133, 292, 63, 85, 72, 73, 74, 135, 63, - 85, 78, 195, 84, 138, 137, 84, 84, 78, 63, - 85, 63, 64, 84, 140, 78, 64, 141, 78, 64, - 64, 78, 142, 84, 143, 144, 64, 144, 78, 64, - 84, 138, 64, 84, 84, 78, 64, 193, 146, 64, - 84, 140, 78, 64, 141, 78, 64, 64, 78, 142, - 84, 143, 144, 64, 144, 147, 64, 92, 148, 64, - 149, 90, 79, 64, 65, 146, 79, 82, 65, 82, - 79, 82, 65, 87, 82, 151, 79, 152, 65, 82, - 86, 65, 147, 61, 86, 148, 79, 149, 65, 79, - - 86, 65, 60, 79, 82, 65, 82, 79, 82, 65, - 86, 82, 151, 79, 152, 65, 82, 86, 65, 53, - 83, 86, 52, 79, 83, 65, 66, 86, 83, 145, - 66, 145, 153, 66, 83, 66, 66, 86, 150, 155, - 66, 150, 145, 156, 83, 66, 66, 83, 113, 113, - 113, 83, 113, 66, 48, 83, 145, 66, 145, 153, - 66, 83, 66, 66, 46, 150, 155, 66, 150, 145, - 156, 83, 66, 66, 67, 113, 113, 113, 117, 113, - 117, 67, 67, 117, 157, 67, 158, 159, 67, 117, - 161, 67, 162, 160, 67, 20, 117, 160, 19, 164, - - 11, 67, 7, 4, 3, 117, 0, 117, 67, 67, - 117, 157, 67, 158, 159, 67, 117, 161, 67, 162, - 160, 67, 70, 117, 160, 124, 164, 124, 70, 70, - 70, 124, 163, 165, 166, 70, 0, 163, 124, 168, - 70, 0, 124, 169, 165, 163, 0, 0, 0, 70, - 163, 0, 124, 168, 124, 70, 70, 70, 124, 163, - 165, 166, 70, 139, 163, 124, 168, 70, 75, 124, - 169, 165, 163, 139, 167, 75, 170, 163, 139, 139, - 168, 171, 75, 167, 172, 75, 173, 174, 75, 75, - 139, 167, 175, 176, 177, 75, 0, 0, 174, 0, - - 139, 167, 75, 170, 0, 139, 139, 0, 171, 75, - 167, 172, 75, 173, 174, 75, 75, 76, 167, 175, - 176, 177, 76, 178, 76, 174, 179, 180, 181, 182, - 76, 76, 183, 179, 76, 182, 179, 76, 76, 0, - 184, 185, 186, 178, 76, 183, 0, 295, 0, 76, - 178, 76, 297, 179, 180, 181, 182, 76, 76, 183, - 179, 76, 182, 179, 76, 76, 77, 184, 185, 186, - 178, 203, 183, 77, 295, 203, 298, 77, 300, 297, - 77, 203, 302, 77, 303, 209, 77, 0, 304, 0, - 305, 203, 0, 77, 209, 0, 209, 0, 203, 0, - - 77, 209, 203, 298, 77, 300, 209, 77, 203, 302, - 77, 303, 209, 77, 80, 304, 80, 305, 203, 80, - 80, 209, 80, 209, 80, 306, 80, 80, 209, 204, - 204, 307, 0, 209, 204, 309, 80, 0, 0, 310, - 204, 80, 311, 80, 0, 0, 80, 80, 0, 80, - 204, 80, 306, 80, 80, 205, 204, 204, 307, 205, - 312, 204, 309, 80, 81, 205, 310, 204, 81, 311, - 205, 81, 81, 313, 314, 205, 315, 204, 81, 316, - 317, 81, 205, 318, 319, 320, 205, 312, 81, 0, - 0, 81, 205, 0, 0, 81, 0, 205, 81, 81, - - 313, 314, 205, 315, 0, 81, 316, 317, 81, 0, - 318, 319, 320, 0, 0, 81, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 206, 321, - 206, 208, 323, 208, 324, 206, 206, 208, 208, 325, - 206, 0, 326, 208, 293, 293, 293, 293, 293, 293, - - 293, 293, 293, 293, 0, 206, 321, 206, 208, 323, - 208, 324, 206, 206, 208, 208, 325, 206, 207, 326, - 208, 207, 0, 211, 327, 0, 328, 0, 211, 207, - 211, 207, 281, 329, 212, 211, 207, 331, 212, 281, - 211, 207, 0, 0, 212, 207, 281, 0, 207, 281, - 211, 327, 281, 328, 212, 211, 207, 211, 207, 281, - 329, 212, 211, 207, 331, 212, 281, 211, 207, 210, - 210, 212, 332, 281, 213, 210, 281, 210, 213, 281, - 333, 212, 210, 210, 213, 0, 214, 210, 214, 334, - 0, 0, 0, 214, 213, 335, 210, 210, 214, 332, - - 336, 213, 210, 337, 210, 213, 215, 333, 217, 210, - 210, 213, 217, 214, 210, 214, 334, 215, 217, 215, - 214, 213, 335, 0, 215, 214, 338, 336, 217, 215, - 337, 0, 0, 215, 0, 217, 0, 0, 339, 217, - 340, 0, 0, 0, 215, 217, 215, 0, 0, 342, - 218, 215, 0, 338, 218, 217, 215, 216, 216, 216, - 218, 216, 0, 218, 216, 339, 222, 340, 222, 216, - 218, 343, 0, 222, 341, 222, 342, 218, 222, 219, - 344, 218, 341, 219, 216, 216, 216, 218, 216, 219, - 218, 216, 345, 222, 219, 222, 216, 218, 343, 219, - - 222, 341, 222, 346, 347, 222, 219, 344, 0, 341, - 219, 0, 348, 0, 0, 0, 219, 0, 0, 345, - 0, 219, 349, 0, 223, 350, 219, 220, 223, 220, - 346, 347, 220, 351, 223, 221, 352, 221, 220, 348, - 220, 221, 221, 353, 223, 220, 224, 221, 224, 349, - 220, 223, 350, 224, 220, 223, 220, 354, 224, 220, - 351, 223, 221, 352, 221, 220, 0, 220, 221, 221, - 353, 223, 220, 224, 221, 224, 0, 220, 0, 0, - 224, 356, 226, 357, 354, 224, 225, 225, 308, 0, - 308, 226, 228, 226, 228, 225, 230, 225, 226, 228, - - 230, 359, 225, 226, 228, 308, 230, 225, 356, 226, - 357, 0, 360, 225, 225, 308, 230, 308, 226, 228, - 226, 228, 225, 230, 225, 226, 228, 230, 359, 225, - 226, 228, 308, 230, 225, 227, 355, 227, 229, 360, - 229, 227, 361, 230, 362, 229, 355, 227, 227, 231, - 229, 231, 227, 364, 0, 231, 231, 227, 0, 0, - 0, 231, 227, 355, 227, 229, 365, 229, 227, 361, - 0, 362, 229, 355, 227, 227, 231, 229, 231, 227, - 364, 232, 231, 231, 227, 232, 234, 233, 231, 233, - 234, 232, 366, 365, 233, 236, 234, 236, 367, 233, - - 235, 232, 236, 368, 235, 236, 234, 236, 232, 0, - 235, 0, 232, 234, 233, 0, 233, 234, 232, 366, - 235, 233, 236, 234, 236, 367, 233, 235, 232, 236, - 368, 235, 236, 234, 236, 0, 237, 235, 237, 370, - 371, 372, 238, 237, 238, 373, 374, 235, 237, 238, - 239, 238, 239, 375, 238, 0, 0, 239, 376, 0, - 0, 0, 239, 237, 363, 237, 370, 371, 372, 238, - 237, 238, 373, 374, 363, 237, 238, 239, 238, 239, - 375, 238, 240, 241, 239, 376, 240, 241, 243, 239, - 243, 363, 240, 241, 241, 243, 378, 380, 381, 377, - - 243, 363, 240, 241, 0, 0, 0, 382, 383, 240, - 241, 0, 0, 240, 241, 243, 0, 243, 377, 240, - 241, 241, 243, 378, 380, 381, 377, 243, 244, 240, - 241, 242, 244, 245, 382, 383, 379, 245, 244, 242, - 384, 242, 385, 245, 386, 377, 242, 242, 244, 379, - 249, 242, 249, 245, 0, 244, 249, 249, 242, 244, - 245, 0, 249, 379, 245, 244, 242, 384, 242, 385, - 245, 386, 0, 242, 242, 244, 379, 249, 242, 249, - 245, 246, 246, 249, 249, 246, 250, 387, 250, 249, - 388, 246, 251, 250, 251, 389, 322, 390, 250, 251, - - 322, 246, 0, 391, 251, 392, 0, 0, 246, 246, - 0, 322, 246, 250, 387, 250, 394, 388, 246, 251, - 250, 251, 389, 322, 390, 250, 251, 322, 246, 247, - 391, 251, 392, 247, 252, 247, 252, 247, 322, 247, - 395, 252, 252, 394, 396, 397, 252, 398, 399, 247, - 0, 0, 0, 0, 400, 0, 247, 0, 401, 0, - 247, 252, 247, 252, 247, 0, 247, 395, 252, 252, - 402, 396, 397, 252, 398, 399, 247, 248, 256, 248, - 254, 400, 254, 403, 256, 401, 256, 254, 248, 404, - 248, 256, 254, 0, 406, 248, 256, 402, 0, 408, - - 248, 0, 410, 0, 248, 256, 248, 254, 0, 254, - 403, 256, 0, 256, 254, 248, 404, 248, 256, 254, - 255, 406, 248, 256, 0, 407, 408, 248, 253, 410, - 253, 255, 411, 255, 407, 253, 253, 0, 255, 253, - 253, 412, 257, 255, 257, 0, 413, 255, 0, 257, - 0, 409, 407, 409, 257, 253, 0, 253, 255, 411, - 255, 407, 253, 253, 258, 255, 253, 253, 412, 257, - 255, 257, 258, 413, 258, 259, 257, 259, 409, 258, - 409, 257, 259, 259, 258, 260, 0, 259, 414, 260, - 0, 258, 415, 416, 0, 260, 0, 0, 0, 258, - - 0, 258, 259, 418, 259, 260, 258, 0, 0, 259, - 259, 258, 260, 261, 259, 414, 260, 261, 0, 415, - 416, 262, 260, 261, 417, 262, 261, 263, 417, 262, - 418, 263, 260, 261, 265, 262, 265, 263, 419, 264, - 261, 265, 550, 264, 261, 262, 265, 263, 262, 264, - 261, 417, 262, 261, 263, 417, 262, 0, 263, 264, - 261, 265, 262, 265, 263, 419, 264, 0, 265, 550, - 264, 0, 262, 265, 263, 0, 264, 267, 0, 0, - 0, 272, 267, 0, 267, 272, 264, 266, 551, 267, - 552, 272, 266, 553, 267, 268, 554, 268, 266, 555, - - 266, 272, 268, 556, 267, 266, 268, 268, 272, 267, - 266, 267, 272, 0, 266, 551, 267, 552, 272, 266, - 553, 267, 268, 554, 268, 266, 555, 266, 272, 268, - 556, 557, 266, 268, 268, 269, 271, 266, 0, 269, - 271, 269, 276, 558, 271, 276, 269, 560, 563, 276, - 271, 269, 0, 564, 565, 276, 566, 568, 557, 569, - 271, 0, 269, 271, 570, 276, 269, 271, 269, 276, - 558, 271, 276, 269, 560, 563, 276, 271, 269, 270, - 564, 565, 276, 566, 568, 273, 569, 271, 270, 273, - 270, 570, 276, 273, 274, 270, 270, 0, 274, 273, - - 270, 0, 571, 573, 274, 0, 270, 274, 574, 273, - 575, 0, 273, 576, 274, 270, 273, 270, 577, 0, - 273, 274, 270, 270, 275, 274, 273, 270, 275, 571, - 573, 274, 275, 578, 274, 574, 273, 575, 275, 0, - 576, 274, 277, 277, 277, 577, 278, 0, 275, 277, - 278, 275, 579, 580, 277, 275, 278, 0, 581, 275, - 578, 0, 0, 0, 279, 275, 278, 0, 279, 277, - 277, 277, 279, 278, 279, 275, 277, 278, 280, 579, - 580, 277, 280, 278, 279, 581, 582, 0, 280, 280, - 284, 279, 585, 278, 284, 279, 586, 0, 280, 279, - - 284, 279, 0, 283, 283, 280, 0, 587, 283, 280, - 284, 279, 0, 582, 283, 280, 280, 284, 0, 585, - 588, 284, 0, 586, 283, 280, 282, 284, 0, 282, - 283, 283, 589, 282, 587, 283, 282, 284, 285, 282, - 285, 283, 286, 590, 285, 285, 286, 588, 591, 282, - 285, 283, 286, 282, 287, 286, 282, 0, 287, 589, - 282, 0, 286, 282, 287, 285, 282, 285, 0, 286, - 590, 285, 285, 286, 287, 591, 282, 285, 592, 286, - 288, 287, 286, 423, 288, 287, 594, 423, 289, 286, - 288, 287, 289, 423, 595, 288, 289, 427, 596, 427, - - 288, 287, 289, 423, 427, 592, 597, 288, 600, 427, - 423, 288, 289, 594, 423, 289, 0, 288, 0, 289, - 423, 595, 288, 289, 427, 596, 427, 288, 0, 289, - 423, 427, 0, 597, 0, 600, 427, 0, 601, 289, - 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, - 424, 425, 426, 0, 424, 425, 426, 428, 0, 428, - 424, 425, 426, 0, 428, 601, 603, 605, 606, 428, - 424, 425, 426, 430, 0, 430, 0, 424, 425, 426, - 430, 424, 425, 426, 428, 430, 428, 424, 425, 426, - 429, 428, 0, 603, 605, 606, 428, 424, 425, 426, - - 430, 429, 430, 429, 607, 431, 432, 430, 429, 431, - 432, 608, 430, 429, 0, 431, 432, 429, 0, 434, - 609, 610, 613, 434, 0, 431, 432, 617, 429, 434, - 429, 607, 431, 432, 0, 429, 431, 432, 608, 434, - 429, 433, 431, 432, 619, 433, 434, 609, 610, 613, - 434, 433, 431, 432, 617, 435, 434, 435, 436, 433, - 436, 433, 435, 620, 0, 436, 434, 435, 433, 622, - 436, 619, 433, 0, 0, 624, 0, 0, 433, 625, - 0, 626, 435, 0, 435, 436, 433, 436, 433, 435, - 620, 439, 436, 0, 435, 439, 622, 436, 437, 438, - - 437, 439, 624, 438, 437, 611, 625, 439, 626, 438, - 437, 439, 438, 440, 0, 437, 611, 440, 439, 438, - 437, 440, 439, 440, 0, 437, 438, 437, 439, 0, - 438, 437, 611, 440, 439, 628, 438, 437, 439, 438, - 440, 441, 437, 611, 440, 441, 438, 437, 440, 442, - 440, 441, 629, 442, 623, 623, 441, 630, 631, 442, - 440, 441, 628, 443, 633, 634, 0, 443, 441, 442, - 636, 443, 441, 0, 0, 637, 442, 443, 441, 629, - 442, 623, 623, 441, 630, 631, 442, 443, 441, 0, - 443, 633, 634, 444, 443, 444, 442, 636, 443, 0, - - 444, 445, 637, 445, 443, 444, 446, 445, 445, 638, - 446, 449, 639, 445, 443, 449, 446, 447, 0, 447, - 444, 449, 444, 0, 447, 0, 446, 444, 445, 447, - 445, 449, 444, 446, 445, 445, 638, 446, 449, 639, - 445, 640, 449, 446, 447, 448, 447, 448, 449, 0, - 451, 447, 448, 446, 451, 0, 447, 448, 449, 450, - 451, 0, 642, 450, 0, 451, 643, 450, 640, 644, - 451, 0, 448, 450, 448, 645, 452, 451, 452, 448, - 646, 451, 452, 450, 448, 648, 450, 451, 452, 642, - 450, 453, 451, 643, 450, 453, 644, 451, 452, 0, - - 450, 453, 645, 452, 454, 452, 0, 646, 454, 452, - 450, 453, 648, 455, 454, 452, 455, 0, 453, 454, - 455, 0, 453, 649, 454, 452, 455, 0, 453, 457, - 0, 454, 650, 457, 0, 454, 455, 0, 453, 457, - 455, 454, 651, 455, 456, 654, 454, 455, 456, 457, - 649, 454, 0, 455, 456, 456, 457, 458, 459, 650, - 457, 458, 459, 455, 456, 655, 457, 458, 459, 651, - 461, 456, 654, 656, 461, 456, 457, 458, 459, 460, - 461, 456, 456, 460, 458, 459, 657, 460, 458, 459, - 461, 456, 655, 460, 458, 459, 462, 461, 462, 658, - - 656, 461, 462, 460, 458, 459, 460, 461, 462, 463, - 460, 463, 0, 657, 460, 0, 463, 461, 462, 0, - 460, 463, 661, 462, 0, 462, 658, 0, 662, 462, - 460, 0, 464, 0, 464, 462, 463, 664, 463, 464, - 465, 0, 465, 463, 464, 462, 465, 465, 463, 661, - 467, 466, 465, 466, 467, 662, 665, 0, 466, 464, - 467, 464, 666, 466, 664, 0, 464, 465, 468, 465, - 467, 464, 468, 465, 465, 0, 468, 467, 466, 465, - 466, 467, 468, 665, 469, 466, 469, 467, 667, 666, - 466, 469, 468, 0, 470, 468, 469, 467, 470, 468, - - 668, 0, 470, 468, 470, 0, 0, 0, 669, 468, - 670, 469, 471, 469, 470, 667, 471, 0, 469, 468, - 471, 470, 471, 469, 0, 470, 472, 668, 472, 470, - 671, 470, 471, 472, 473, 669, 672, 670, 472, 471, - 0, 470, 0, 471, 473, 0, 473, 471, 0, 471, - 674, 473, 0, 472, 676, 472, 473, 671, 678, 471, - 472, 473, 476, 672, 475, 472, 476, 474, 475, 474, - 475, 473, 476, 473, 474, 475, 474, 674, 473, 474, - 475, 676, 476, 473, 812, 678, 0, 814, 0, 476, - 0, 475, 0, 476, 474, 475, 474, 475, 816, 476, - - 477, 474, 475, 474, 477, 817, 474, 475, 478, 476, - 477, 812, 478, 479, 814, 477, 818, 479, 478, 479, - 477, 478, 0, 479, 819, 816, 0, 477, 478, 0, - 0, 477, 817, 479, 0, 478, 820, 477, 821, 478, - 479, 822, 477, 818, 479, 478, 479, 477, 478, 480, - 479, 819, 481, 480, 482, 478, 481, 483, 482, 480, - 479, 483, 481, 820, 482, 821, 0, 483, 822, 480, - 0, 0, 481, 823, 482, 0, 480, 483, 0, 481, - 480, 482, 0, 481, 483, 482, 480, 0, 483, 481, - 0, 482, 824, 484, 483, 826, 480, 484, 485, 481, - - 823, 482, 485, 484, 483, 486, 827, 486, 485, 487, - 828, 487, 486, 484, 485, 0, 487, 486, 485, 824, - 484, 487, 826, 829, 484, 485, 830, 0, 0, 485, - 484, 831, 486, 827, 486, 485, 487, 828, 487, 486, - 484, 485, 489, 487, 486, 485, 489, 488, 487, 488, - 829, 832, 489, 830, 488, 488, 0, 490, 831, 488, - 0, 490, 489, 0, 0, 834, 0, 490, 0, 489, - 835, 836, 837, 489, 488, 838, 488, 490, 832, 489, - 0, 488, 488, 493, 490, 493, 488, 493, 490, 489, - 491, 491, 834, 493, 490, 491, 839, 835, 836, 837, - - 840, 491, 838, 493, 490, 494, 841, 494, 0, 494, - 493, 491, 493, 0, 493, 494, 0, 491, 491, 0, - 493, 842, 491, 839, 0, 494, 0, 840, 491, 0, - 493, 496, 494, 841, 494, 496, 494, 843, 491, 492, - 495, 496, 494, 492, 495, 844, 496, 492, 842, 492, - 495, 496, 494, 492, 0, 847, 495, 0, 496, 848, - 495, 0, 496, 492, 843, 497, 492, 495, 496, 497, - 492, 495, 844, 496, 492, 497, 492, 495, 496, 849, - 492, 497, 847, 495, 498, 497, 848, 495, 498, 499, - 492, 850, 497, 499, 498, 851, 497, 499, 500, 852, - - 500, 855, 497, 499, 498, 500, 849, 858, 497, 0, - 500, 498, 497, 499, 0, 498, 499, 859, 850, 0, - 499, 498, 851, 861, 499, 500, 852, 500, 855, 0, - 499, 498, 500, 864, 858, 0, 501, 500, 501, 502, - 499, 502, 501, 501, 859, 0, 502, 0, 501, 867, - 861, 502, 503, 0, 504, 868, 503, 869, 504, 870, - 864, 871, 503, 501, 504, 501, 502, 505, 502, 501, - 501, 505, 503, 502, 504, 501, 867, 505, 502, 503, - 505, 504, 868, 503, 869, 504, 870, 505, 871, 503, - 872, 504, 0, 507, 505, 507, 0, 875, 505, 503, - - 507, 504, 0, 876, 505, 507, 512, 505, 512, 509, - 509, 509, 0, 512, 505, 506, 509, 872, 512, 506, - 507, 509, 507, 506, 875, 0, 877, 507, 878, 506, - 876, 0, 507, 512, 506, 512, 509, 509, 509, 506, - 512, 860, 506, 509, 860, 512, 506, 879, 509, 0, - 506, 0, 510, 877, 510, 878, 506, 882, 511, 510, - 510, 506, 0, 511, 510, 511, 506, 508, 860, 883, - 511, 860, 0, 0, 879, 511, 508, 0, 508, 510, - 508, 510, 0, 508, 882, 511, 510, 510, 508, 513, - 511, 510, 511, 513, 508, 884, 883, 511, 886, 513, - - 514, 0, 511, 508, 514, 508, 0, 508, 514, 513, - 508, 887, 0, 515, 514, 508, 513, 515, 0, 0, - 513, 0, 884, 515, 514, 886, 513, 514, 515, 888, - 0, 514, 0, 515, 0, 514, 513, 889, 887, 516, - 515, 514, 516, 516, 515, 517, 518, 517, 518, 516, - 515, 514, 517, 518, 0, 515, 888, 517, 518, 516, - 515, 519, 891, 892, 889, 519, 516, 893, 0, 516, - 516, 519, 517, 518, 517, 518, 516, 894, 895, 517, - 518, 519, 896, 520, 517, 518, 516, 520, 519, 891, - 892, 521, 519, 520, 893, 521, 522, 897, 519, 898, - - 522, 521, 899, 520, 894, 895, 522, 0, 519, 896, - 520, 521, 0, 0, 520, 0, 522, 0, 521, 0, - 520, 523, 521, 522, 897, 523, 898, 522, 521, 899, - 520, 523, 901, 522, 523, 524, 525, 902, 521, 524, - 525, 523, 526, 522, 526, 524, 525, 525, 523, 526, - 0, 903, 523, 524, 526, 524, 525, 0, 523, 901, - 905, 523, 524, 525, 902, 0, 524, 525, 523, 526, - 0, 526, 524, 525, 525, 0, 526, 527, 903, 527, - 524, 526, 524, 525, 527, 527, 528, 905, 528, 527, - 529, 906, 529, 528, 528, 907, 1012, 529, 528, 0, - - 1014, 0, 529, 0, 527, 0, 527, 0, 0, 1016, - 0, 527, 527, 528, 1017, 528, 527, 529, 906, 529, - 528, 528, 907, 1012, 529, 528, 530, 1014, 530, 529, - 530, 0, 531, 530, 531, 532, 1016, 532, 530, 531, - 531, 1017, 532, 1018, 531, 0, 1019, 532, 533, 0, - 0, 1021, 533, 530, 0, 530, 0, 530, 533, 531, - 530, 531, 532, 1023, 532, 530, 531, 531, 533, 532, - 1018, 531, 534, 1019, 532, 533, 534, 536, 1021, 533, - 0, 535, 534, 535, 536, 533, 536, 0, 535, 1024, - 1023, 536, 534, 535, 1025, 533, 536, 537, 0, 534, - - 0, 537, 538, 534, 536, 0, 538, 537, 535, 534, - 535, 536, 538, 536, 538, 535, 1024, 537, 536, 534, - 535, 1025, 538, 536, 537, 541, 539, 541, 537, 538, - 539, 0, 541, 538, 537, 1026, 539, 541, 0, 538, - 0, 538, 1027, 0, 537, 1029, 539, 540, 1030, 538, - 0, 540, 541, 539, 541, 540, 1032, 539, 542, 541, - 542, 540, 1026, 539, 541, 542, 1034, 542, 543, 1027, - 542, 540, 1029, 539, 540, 1030, 0, 543, 540, 543, - 0, 0, 540, 1032, 543, 542, 0, 542, 540, 543, - 1037, 1039, 542, 1034, 542, 543, 1040, 542, 540, 0, - - 0, 544, 1041, 544, 543, 0, 543, 545, 544, 545, - 1042, 543, 544, 544, 545, 545, 543, 1037, 1039, 545, - 546, 0, 546, 1040, 1049, 1050, 546, 546, 544, 1041, - 544, 0, 546, 0, 545, 544, 545, 1042, 1051, 544, - 544, 545, 545, 1054, 547, 1056, 545, 546, 547, 546, - 547, 1049, 1050, 546, 546, 547, 548, 1058, 548, 546, - 547, 0, 548, 548, 1060, 1051, 0, 680, 548, 680, - 1054, 547, 1056, 680, 680, 547, 1061, 547, 1062, 680, - 0, 0, 547, 548, 1058, 548, 681, 547, 681, 548, - 548, 1060, 681, 681, 680, 548, 680, 0, 681, 0, - - 680, 680, 1063, 1061, 682, 1062, 680, 683, 682, 0, - 1064, 683, 0, 681, 682, 681, 685, 683, 685, 681, - 681, 0, 1065, 685, 682, 681, 684, 683, 685, 1063, - 684, 682, 1067, 0, 683, 682, 684, 1064, 683, 684, - 0, 682, 1068, 685, 683, 685, 684, 0, 686, 1065, - 685, 682, 686, 684, 683, 685, 1069, 684, 686, 1067, - 687, 688, 687, 684, 1070, 688, 684, 687, 686, 1068, - 689, 688, 687, 684, 689, 686, 1072, 0, 0, 686, - 689, 688, 0, 1069, 1074, 686, 1076, 687, 688, 687, - 689, 1070, 688, 0, 687, 686, 690, 689, 688, 687, - - 690, 689, 691, 1072, 690, 692, 691, 689, 688, 692, - 690, 1074, 691, 1076, 1077, 692, 1078, 689, 1079, 1080, - 690, 1085, 691, 690, 1086, 692, 693, 690, 0, 691, - 693, 690, 692, 691, 693, 0, 692, 690, 0, 691, - 693, 1077, 692, 1078, 1168, 1079, 1080, 690, 1085, 691, - 693, 1086, 692, 693, 694, 695, 696, 693, 694, 695, - 696, 693, 694, 0, 694, 695, 696, 693, 697, 696, - 1172, 1168, 697, 0, 694, 695, 696, 693, 697, 0, - 700, 694, 695, 696, 700, 694, 695, 696, 697, 694, - 700, 694, 695, 696, 698, 697, 696, 1172, 698, 697, - - 700, 694, 695, 696, 698, 697, 699, 700, 699, 698, - 1173, 700, 0, 699, 698, 697, 1176, 700, 699, 701, - 1177, 698, 702, 701, 1178, 698, 702, 700, 0, 701, - 0, 698, 702, 699, 701, 699, 698, 1173, 0, 701, - 699, 698, 702, 1176, 0, 699, 701, 1177, 0, 702, - 701, 1178, 1179, 702, 1183, 703, 701, 703, 1186, 702, - 1187, 701, 703, 704, 704, 704, 701, 703, 1190, 702, - 704, 705, 1191, 705, 0, 704, 0, 1192, 705, 1179, - 705, 1183, 703, 705, 703, 1186, 0, 1187, 0, 703, - 704, 704, 704, 1193, 703, 1190, 1196, 704, 705, 1191, - - 705, 706, 704, 706, 1192, 705, 708, 705, 706, 706, - 705, 1197, 1198, 706, 707, 707, 707, 708, 0, 708, - 1193, 707, 0, 1196, 708, 709, 707, 709, 706, 708, - 706, 709, 709, 708, 1201, 706, 706, 709, 1197, 1198, - 706, 707, 707, 707, 708, 711, 708, 0, 707, 711, - 1203, 708, 709, 707, 709, 711, 708, 710, 709, 709, - 1204, 1201, 1205, 1206, 709, 711, 710, 712, 710, 712, - 0, 1207, 711, 710, 712, 1258, 711, 1203, 710, 712, - 1261, 0, 711, 0, 710, 1262, 0, 1204, 0, 1205, - 1206, 0, 711, 710, 712, 710, 712, 713, 1207, 713, - - 710, 712, 1258, 715, 713, 710, 712, 1261, 714, 713, - 714, 715, 1262, 715, 0, 714, 0, 1266, 715, 0, - 714, 1267, 1270, 715, 713, 0, 713, 0, 0, 0, - 715, 713, 0, 0, 1271, 714, 713, 714, 715, 716, - 715, 716, 714, 716, 1266, 715, 716, 714, 1267, 1270, - 715, 716, 717, 718, 717, 718, 717, 1272, 1273, 717, - 718, 1271, 718, 0, 717, 718, 716, 1277, 716, 0, - 716, 0, 1278, 716, 0, 0, 1279, 0, 716, 717, - 718, 717, 718, 717, 1272, 1273, 717, 718, 719, 718, - 719, 717, 718, 720, 1277, 719, 719, 0, 722, 1278, - - 719, 721, 722, 1279, 720, 0, 720, 0, 722, 0, - 1281, 720, 721, 0, 721, 719, 720, 719, 722, 721, - 720, 0, 719, 719, 721, 722, 1309, 719, 721, 722, - 723, 720, 724, 720, 723, 722, 724, 1281, 720, 721, - 723, 721, 724, 720, 725, 722, 721, 724, 725, 0, - 723, 721, 724, 1309, 725, 0, 726, 723, 1310, 724, - 726, 723, 1314, 724, 725, 0, 726, 723, 0, 724, - 1317, 725, 1320, 0, 724, 725, 726, 723, 727, 724, - 728, 725, 727, 726, 728, 1310, 727, 726, 1324, 1314, - 728, 725, 727, 726, 729, 1259, 1259, 1317, 729, 1320, - - 728, 0, 727, 726, 729, 727, 0, 728, 730, 727, - 0, 728, 730, 727, 729, 1324, 730, 728, 0, 727, - 0, 729, 730, 0, 732, 729, 731, 728, 732, 727, - 731, 729, 730, 1259, 732, 730, 731, 731, 733, 730, - 733, 729, 1339, 730, 732, 733, 731, 1284, 1284, 730, - 733, 732, 0, 731, 0, 732, 0, 731, 0, 730, - 1259, 732, 0, 731, 731, 733, 1343, 733, 734, 1339, - 734, 732, 733, 731, 735, 734, 735, 733, 736, 737, - 734, 735, 736, 737, 1346, 1284, 735, 1352, 736, 737, - 1356, 1360, 737, 1343, 1362, 734, 1364, 734, 736, 737, - - 0, 735, 734, 735, 0, 736, 737, 734, 735, 736, - 737, 1346, 1284, 735, 1352, 736, 737, 1356, 1360, 737, - 738, 1362, 738, 1364, 1366, 736, 737, 738, 739, 1368, - 739, 740, 738, 740, 739, 739, 1370, 740, 740, 1372, - 739, 1374, 1376, 740, 1338, 1338, 0, 738, 0, 738, - 1378, 1366, 0, 0, 738, 739, 1368, 739, 740, 738, - 740, 739, 739, 1370, 740, 740, 1372, 739, 1374, 1376, - 740, 741, 742, 743, 742, 743, 741, 1378, 741, 742, - 743, 0, 741, 741, 742, 743, 1338, 0, 741, 0, - 1345, 1345, 0, 0, 0, 0, 0, 0, 741, 742, - - 743, 742, 743, 741, 0, 741, 742, 743, 0, 741, - 741, 742, 743, 1338, 744, 741, 744, 745, 746, 745, - 746, 744, 0, 0, 745, 746, 744, 0, 0, 745, - 746, 0, 1345, 0, 0, 0, 0, 0, 0, 0, - 0, 744, 0, 744, 745, 746, 745, 746, 744, 0, - 0, 745, 746, 744, 0, 0, 745, 746, 747, 1345, - 747, 748, 749, 748, 749, 747, 747, 0, 748, 749, - 747, 0, 0, 748, 749, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 747, 0, 747, 748, 749, - 748, 749, 747, 747, 750, 748, 749, 747, 750, 751, - - 748, 749, 752, 751, 750, 0, 752, 754, 753, 751, - 753, 754, 752, 754, 750, 753, 753, 0, 754, 751, - 753, 750, 752, 754, 0, 750, 751, 0, 0, 752, - 751, 750, 0, 752, 754, 753, 751, 753, 754, 752, - 754, 750, 753, 753, 756, 754, 751, 753, 756, 752, - 754, 755, 757, 755, 756, 0, 757, 755, 755, 0, - 0, 0, 757, 755, 756, 0, 0, 0, 0, 0, - 0, 756, 757, 0, 0, 756, 0, 0, 755, 757, - 755, 756, 0, 757, 755, 755, 758, 0, 758, 757, - 755, 756, 758, 0, 0, 0, 759, 760, 758, 757, - - 759, 760, 0, 0, 0, 0, 759, 760, 758, 0, - 760, 0, 0, 758, 0, 758, 759, 760, 0, 758, - 0, 0, 0, 759, 760, 758, 761, 759, 760, 0, - 761, 0, 0, 759, 760, 758, 761, 760, 762, 761, - 0, 763, 762, 759, 760, 763, 761, 0, 762, 763, - 764, 763, 0, 761, 764, 0, 0, 761, 762, 0, - 764, 763, 0, 761, 0, 762, 761, 0, 763, 762, - 764, 0, 763, 761, 0, 762, 763, 764, 763, 765, - 766, 764, 0, 765, 766, 762, 0, 764, 763, 765, - 766, 0, 0, 0, 767, 0, 0, 764, 767, 765, - - 766, 0, 767, 0, 0, 0, 765, 766, 767, 0, - 765, 766, 0, 0, 0, 0, 765, 766, 767, 0, - 768, 767, 0, 0, 768, 767, 765, 766, 768, 767, - 0, 0, 769, 770, 768, 767, 769, 770, 0, 0, - 0, 0, 769, 770, 768, 767, 771, 768, 0, 0, - 771, 768, 769, 770, 0, 768, 771, 0, 0, 769, - 770, 768, 0, 769, 770, 0, 771, 0, 772, 769, - 770, 768, 772, 771, 0, 0, 0, 771, 772, 769, - 770, 772, 773, 771, 0, 0, 773, 774, 772, 0, - 773, 774, 773, 771, 0, 772, 0, 774, 0, 772, - - 774, 0, 773, 0, 0, 772, 775, 774, 772, 773, - 775, 0, 0, 773, 774, 772, 775, 773, 774, 773, - 0, 775, 0, 0, 774, 0, 775, 774, 776, 773, - 0, 776, 777, 775, 774, 776, 777, 775, 0, 0, - 0, 776, 777, 775, 0, 0, 778, 0, 775, 0, - 778, 776, 777, 775, 778, 776, 778, 0, 776, 777, - 0, 0, 776, 777, 0, 0, 778, 0, 776, 777, - 0, 0, 0, 778, 0, 780, 0, 778, 776, 777, - 779, 778, 779, 778, 780, 781, 780, 779, 0, 781, - 782, 780, 779, 778, 782, 781, 780, 0, 0, 0, - - 782, 0, 780, 0, 0, 781, 0, 779, 0, 779, - 782, 780, 781, 780, 779, 0, 781, 782, 780, 779, - 783, 782, 781, 780, 783, 785, 784, 782, 784, 785, - 783, 0, 781, 784, 0, 785, 0, 782, 784, 786, - 783, 0, 0, 786, 787, 785, 0, 783, 787, 786, - 0, 783, 785, 784, 787, 784, 785, 783, 0, 786, - 784, 0, 785, 0, 787, 784, 786, 783, 0, 788, - 786, 787, 785, 788, 789, 787, 786, 0, 789, 788, - 0, 787, 0, 790, 789, 0, 786, 790, 0, 788, - 791, 787, 791, 790, 789, 0, 788, 791, 0, 0, - - 788, 789, 791, 790, 0, 789, 788, 0, 0, 0, - 790, 789, 0, 0, 790, 0, 788, 791, 0, 791, - 790, 789, 0, 0, 791, 792, 793, 792, 793, 791, - 790, 0, 792, 793, 0, 794, 0, 792, 793, 0, - 0, 0, 0, 0, 794, 0, 794, 0, 0, 0, - 0, 794, 792, 793, 792, 793, 794, 0, 0, 792, - 793, 0, 794, 0, 792, 793, 0, 795, 796, 795, - 796, 794, 0, 794, 795, 796, 795, 0, 794, 795, - 796, 0, 0, 794, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 795, 796, 795, 796, 798, 0, - - 0, 795, 796, 795, 0, 0, 795, 796, 797, 798, - 797, 798, 0, 0, 0, 797, 798, 797, 0, 0, - 797, 798, 799, 0, 799, 798, 0, 0, 0, 799, - 799, 0, 0, 0, 799, 797, 798, 797, 798, 0, - 0, 0, 797, 798, 797, 0, 0, 797, 798, 799, - 0, 799, 0, 800, 0, 0, 799, 799, 800, 801, - 800, 799, 803, 801, 802, 800, 803, 802, 802, 801, - 800, 0, 803, 0, 802, 0, 0, 0, 0, 801, - 800, 0, 803, 0, 802, 800, 801, 800, 0, 803, - 801, 802, 800, 803, 802, 802, 801, 800, 804, 803, - - 805, 802, 804, 806, 805, 0, 801, 806, 804, 803, - 805, 802, 807, 806, 804, 0, 807, 0, 804, 0, - 805, 0, 807, 806, 0, 804, 808, 805, 808, 804, - 806, 805, 807, 808, 806, 804, 0, 805, 808, 807, - 806, 804, 0, 807, 911, 804, 911, 805, 0, 807, - 806, 911, 0, 808, 0, 808, 911, 0, 0, 807, - 808, 0, 912, 0, 912, 808, 0, 0, 913, 912, - 913, 911, 0, 911, 912, 913, 0, 0, 911, 0, - 913, 0, 913, 911, 0, 0, 914, 0, 914, 912, - 915, 912, 0, 914, 915, 913, 912, 913, 914, 0, - - 915, 912, 913, 0, 916, 0, 0, 913, 916, 913, - 915, 0, 917, 914, 916, 914, 917, 915, 0, 0, - 914, 915, 917, 0, 916, 914, 0, 915, 0, 0, - 918, 916, 917, 0, 918, 916, 0, 915, 919, 917, - 918, 916, 919, 917, 0, 918, 919, 0, 0, 917, - 918, 916, 919, 920, 920, 0, 0, 918, 920, 917, - 0, 918, 919, 0, 920, 919, 0, 918, 0, 919, - 0, 0, 918, 919, 920, 0, 921, 918, 921, 919, - 920, 920, 921, 0, 0, 920, 0, 0, 921, 919, - 922, 920, 922, 0, 0, 0, 0, 922, 921, 0, - - 0, 920, 922, 921, 923, 921, 923, 0, 0, 921, - 924, 923, 923, 0, 924, 921, 923, 922, 0, 922, - 924, 0, 925, 0, 922, 921, 925, 0, 0, 922, - 924, 923, 925, 923, 0, 0, 926, 924, 923, 923, - 926, 924, 925, 923, 0, 0, 926, 924, 927, 925, - 927, 0, 0, 925, 928, 927, 926, 924, 928, 925, - 927, 0, 0, 926, 928, 0, 929, 926, 0, 925, - 929, 0, 0, 926, 928, 927, 929, 927, 0, 0, - 930, 928, 927, 926, 930, 928, 929, 927, 930, 0, - 0, 928, 932, 929, 930, 0, 932, 929, 931, 0, - - 931, 928, 932, 929, 930, 931, 0, 930, 0, 0, - 931, 930, 932, 929, 933, 930, 934, 0, 933, 932, - 934, 930, 0, 932, 933, 931, 934, 931, 0, 932, - 0, 930, 931, 0, 933, 0, 934, 931, 935, 932, - 936, 933, 935, 934, 936, 933, 0, 934, 935, 0, - 936, 933, 937, 934, 937, 936, 0, 0, 935, 937, - 936, 933, 0, 934, 937, 935, 0, 936, 938, 935, - 939, 936, 938, 0, 939, 935, 0, 936, 938, 937, - 939, 937, 936, 0, 0, 935, 937, 936, 938, 0, - 939, 937, 940, 0, 941, 938, 940, 939, 941, 938, - - 0, 939, 940, 0, 941, 938, 0, 939, 0, 941, - 0, 0, 940, 0, 941, 938, 0, 939, 942, 940, - 0, 941, 942, 940, 0, 941, 0, 0, 942, 940, - 943, 941, 943, 942, 0, 0, 941, 943, 942, 940, - 0, 941, 943, 944, 945, 942, 945, 944, 946, 942, - 945, 0, 946, 944, 0, 942, 945, 943, 946, 943, - 942, 0, 0, 944, 943, 942, 945, 0, 946, 943, - 944, 945, 947, 945, 944, 946, 947, 945, 0, 946, - 944, 0, 947, 945, 948, 946, 0, 949, 948, 949, - 944, 949, 947, 945, 948, 946, 0, 949, 951, 947, - - 951, 0, 948, 947, 948, 951, 0, 949, 0, 947, - 951, 948, 0, 950, 949, 948, 949, 950, 949, 947, - 0, 948, 0, 950, 949, 951, 0, 951, 950, 948, - 0, 948, 951, 950, 949, 0, 952, 951, 952, 954, - 950, 954, 953, 952, 950, 0, 954, 953, 952, 953, - 950, 954, 0, 0, 953, 950, 0, 0, 0, 953, - 950, 0, 0, 952, 0, 952, 954, 0, 954, 953, - 952, 0, 0, 954, 953, 952, 953, 955, 954, 955, - 956, 953, 956, 957, 955, 957, 953, 956, 956, 955, - 957, 958, 956, 958, 0, 957, 0, 0, 958, 0, - - 0, 0, 0, 958, 955, 0, 955, 956, 0, 956, - 957, 955, 957, 0, 956, 956, 955, 957, 958, 956, - 958, 959, 957, 959, 0, 958, 0, 960, 959, 959, - 958, 960, 961, 959, 961, 0, 0, 960, 0, 961, - 0, 0, 961, 0, 961, 0, 0, 960, 959, 0, - 959, 0, 0, 0, 960, 959, 959, 0, 960, 961, - 959, 961, 0, 962, 960, 962, 961, 0, 0, 961, - 962, 961, 0, 0, 960, 962, 963, 964, 963, 964, - 0, 0, 0, 963, 964, 0, 0, 0, 963, 964, - 962, 0, 962, 0, 0, 0, 0, 962, 0, 965, - - 0, 0, 962, 963, 964, 963, 964, 965, 0, 965, - 963, 964, 0, 0, 965, 963, 964, 0, 966, 965, - 966, 967, 0, 967, 0, 966, 965, 0, 967, 0, - 966, 0, 0, 967, 965, 0, 965, 0, 0, 968, - 0, 965, 0, 968, 0, 966, 965, 966, 967, 968, - 967, 969, 966, 969, 970, 967, 0, 966, 969, 968, - 967, 0, 0, 969, 0, 970, 968, 970, 0, 0, - 968, 0, 970, 0, 0, 0, 968, 970, 969, 0, - 969, 970, 0, 0, 0, 969, 968, 0, 0, 971, - 969, 971, 970, 0, 970, 0, 971, 971, 973, 970, - - 973, 971, 0, 972, 970, 973, 973, 972, 0, 972, - 973, 0, 0, 0, 972, 0, 971, 0, 971, 972, - 0, 0, 0, 971, 971, 973, 0, 973, 971, 0, - 972, 0, 973, 973, 972, 0, 972, 973, 974, 0, - 974, 972, 975, 976, 975, 974, 972, 976, 0, 975, - 974, 0, 0, 976, 975, 0, 0, 0, 977, 0, - 0, 0, 977, 976, 0, 974, 0, 974, 977, 975, - 976, 975, 974, 977, 976, 0, 975, 974, 977, 0, - 976, 975, 978, 978, 979, 977, 0, 978, 979, 977, - 976, 0, 0, 978, 979, 977, 0, 979, 0, 0, - - 977, 0, 0, 978, 979, 977, 0, 0, 0, 978, - 978, 979, 980, 981, 978, 979, 980, 981, 0, 0, - 978, 979, 980, 981, 979, 980, 0, 0, 0, 0, - 978, 979, 980, 981, 0, 0, 0, 982, 983, 980, - 981, 982, 983, 980, 981, 0, 0, 982, 983, 980, - 981, 984, 980, 0, 0, 984, 0, 982, 983, 980, - 981, 984, 0, 985, 982, 983, 986, 985, 982, 983, - 986, 984, 0, 985, 982, 983, 986, 0, 984, 0, - 0, 0, 984, 985, 982, 983, 986, 987, 984, 0, - 985, 987, 0, 986, 985, 987, 0, 986, 984, 0, - - 985, 987, 0, 986, 0, 0, 0, 0, 0, 0, - 985, 987, 988, 986, 987, 0, 988, 990, 987, 0, - 988, 990, 987, 0, 989, 989, 988, 990, 987, 989, - 991, 0, 990, 0, 991, 989, 988, 990, 987, 988, - 991, 0, 0, 988, 990, 989, 0, 988, 990, 0, - 991, 989, 989, 988, 990, 0, 989, 991, 0, 990, - 0, 991, 989, 988, 990, 992, 0, 991, 0, 992, - 0, 0, 989, 993, 993, 992, 0, 991, 993, 994, - 0, 0, 0, 994, 993, 992, 0, 994, 0, 0, - 0, 0, 992, 994, 993, 0, 992, 995, 0, 995, - - 993, 993, 992, 994, 995, 993, 994, 0, 0, 995, - 994, 993, 992, 0, 994, 0, 996, 0, 996, 0, - 994, 993, 996, 996, 995, 997, 995, 997, 996, 0, - 994, 995, 997, 997, 0, 998, 995, 997, 0, 0, - 0, 0, 0, 996, 0, 996, 998, 0, 998, 996, - 996, 0, 997, 998, 997, 996, 999, 0, 998, 997, - 997, 0, 998, 0, 997, 0, 0, 999, 0, 999, - 1000, 0, 1000, 998, 999, 998, 0, 1000, 0, 999, - 998, 0, 1000, 999, 0, 998, 1001, 0, 1001, 0, - 0, 0, 0, 1001, 999, 0, 999, 1000, 1001, 1000, - - 0, 999, 0, 0, 1000, 0, 999, 1002, 0, 1000, - 0, 1002, 0, 1001, 0, 1001, 0, 1002, 1003, 1003, - 1001, 0, 1004, 1003, 0, 1001, 1004, 1002, 0, 1003, - 0, 1005, 1004, 0, 1002, 1005, 0, 0, 1002, 1003, - 0, 1005, 1004, 0, 1002, 1003, 1003, 0, 0, 1004, - 1003, 1005, 0, 1004, 1002, 0, 1003, 0, 1005, 1004, - 0, 1007, 1005, 1006, 0, 1006, 1003, 0, 1005, 1004, - 1006, 0, 1007, 0, 1007, 1006, 0, 0, 1005, 1007, - 1008, 0, 0, 0, 1007, 0, 0, 0, 1007, 0, - 1006, 1008, 1006, 1008, 0, 0, 0, 1006, 1008, 1007, - - 0, 1007, 1006, 1008, 0, 0, 1007, 1008, 0, 1088, - 1009, 1007, 1009, 1088, 1010, 0, 1010, 1009, 1008, 1088, - 1008, 1010, 1009, 0, 0, 1008, 1010, 0, 0, 1088, - 1008, 0, 0, 0, 0, 0, 1088, 1009, 0, 1009, - 1088, 1010, 0, 1010, 1009, 0, 1088, 1089, 1010, 1009, - 0, 1089, 1090, 1010, 1090, 0, 1088, 1089, 1091, 1090, - 1091, 1092, 1093, 1092, 1090, 1091, 1093, 1089, 1092, 0, - 1091, 0, 1093, 1092, 1089, 0, 0, 0, 1089, 1090, - 0, 1090, 1093, 0, 1089, 1091, 1090, 1091, 1092, 1093, - 1092, 1090, 1091, 1093, 1089, 1092, 0, 1091, 1094, 1093, - - 1092, 0, 1094, 1095, 1096, 1095, 1096, 0, 1094, 1093, - 1095, 1096, 1097, 1094, 1097, 1095, 1096, 0, 1094, 1097, - 0, 0, 0, 0, 1097, 1094, 0, 0, 0, 1094, - 1095, 1096, 1095, 1096, 0, 1094, 0, 1095, 1096, 1097, - 1094, 1097, 1095, 1096, 0, 1094, 1097, 1098, 1099, 1098, - 1099, 1097, 0, 0, 1098, 1099, 1099, 0, 0, 1098, - 1099, 1100, 1100, 1100, 0, 0, 0, 0, 1100, 0, - 0, 0, 0, 1100, 1098, 1099, 1098, 1099, 0, 0, - 0, 1098, 1099, 1099, 0, 1101, 1098, 1099, 1100, 1100, - 1100, 1102, 0, 1102, 1101, 1100, 1101, 1103, 1102, 1103, - - 1100, 1101, 0, 1102, 1103, 1103, 1101, 0, 0, 1103, - 0, 0, 1101, 0, 0, 1104, 0, 1104, 1102, 0, - 1102, 1101, 1104, 1101, 1103, 1102, 1103, 1104, 1101, 0, - 1102, 1103, 1103, 1101, 0, 0, 1103, 0, 1105, 0, - 1105, 1106, 1104, 0, 1104, 1105, 1105, 0, 0, 1104, - 1105, 1106, 0, 1106, 1104, 0, 0, 1107, 1106, 1107, - 0, 0, 0, 1106, 1107, 1105, 0, 1105, 1106, 1107, - 0, 0, 1105, 1105, 0, 0, 0, 1105, 1106, 0, - 1106, 0, 0, 1108, 1107, 1106, 1107, 0, 0, 0, - 1106, 1107, 1108, 1109, 1108, 1109, 1107, 0, 0, 1108, - - 1109, 1110, 0, 1110, 1108, 1109, 0, 0, 1110, 0, - 1108, 0, 0, 1110, 0, 0, 0, 0, 0, 1108, - 1109, 1108, 1109, 0, 0, 0, 1108, 1109, 1110, 0, - 1110, 1108, 1109, 0, 1111, 1110, 1111, 1112, 1113, 1112, - 1110, 1111, 1113, 1115, 1112, 1115, 1111, 1114, 1113, 1112, - 1115, 1114, 0, 0, 0, 1115, 0, 1114, 1113, 0, - 0, 1111, 0, 1111, 1112, 1113, 1112, 1114, 1111, 1113, - 1115, 1112, 1115, 1111, 1114, 1113, 1112, 1115, 1114, 1116, - 0, 1116, 1115, 0, 1114, 1113, 1116, 1116, 1118, 1117, - 1118, 1116, 0, 1117, 1114, 1118, 0, 0, 0, 1117, - - 1118, 0, 0, 0, 0, 0, 1116, 0, 1116, 1117, - 0, 0, 0, 1116, 1116, 1118, 1117, 1118, 1116, 0, - 1117, 1119, 1118, 1119, 0, 0, 1117, 1118, 1119, 0, - 1120, 0, 1120, 1119, 0, 0, 1117, 1120, 0, 1121, - 0, 1121, 1120, 0, 0, 0, 1121, 0, 1119, 0, - 1119, 1121, 0, 0, 0, 1119, 0, 1120, 0, 1120, - 1119, 0, 0, 1122, 1120, 1122, 1121, 0, 1121, 1120, - 1122, 0, 1123, 1121, 1123, 1122, 0, 0, 1121, 1123, - 0, 1124, 0, 1124, 1123, 1126, 0, 0, 1124, 1126, - 1122, 0, 1122, 1124, 0, 1126, 0, 1122, 0, 1123, - - 0, 1123, 1122, 0, 0, 1126, 1123, 1125, 1124, 1125, - 1124, 1123, 1126, 1125, 1125, 1124, 1126, 0, 0, 1125, - 1124, 1127, 1126, 1128, 0, 1127, 0, 1128, 0, 1127, - 0, 0, 1126, 1128, 1125, 1127, 1125, 1130, 0, 1130, - 1125, 1125, 0, 1128, 1130, 1127, 1125, 1129, 1127, 1130, - 1128, 1129, 1127, 0, 1128, 0, 1127, 1129, 0, 0, - 1128, 1131, 1127, 1131, 1130, 0, 1130, 1129, 1131, 0, - 1128, 1130, 1127, 1131, 1129, 1132, 1130, 1132, 1129, 1133, - 0, 1133, 1132, 0, 1129, 0, 1133, 1132, 1131, 0, - 1131, 1133, 1134, 0, 1129, 1131, 0, 0, 0, 0, - - 1131, 0, 1132, 1134, 1132, 1134, 1133, 0, 1133, 1132, - 1134, 0, 0, 1133, 1132, 1134, 1137, 0, 1133, 1134, - 1137, 1135, 0, 1135, 0, 0, 1137, 1136, 1135, 1136, - 1134, 0, 1134, 1135, 1136, 1136, 1137, 1134, 0, 1136, - 0, 0, 1134, 1137, 0, 0, 0, 1137, 1135, 0, - 1135, 0, 0, 1137, 1136, 1135, 1136, 0, 0, 0, - 1135, 1136, 1136, 1137, 1138, 1139, 1136, 1140, 1138, 1139, - 0, 1140, 0, 0, 1138, 1139, 1141, 1140, 1141, 0, - 0, 0, 0, 1141, 1138, 1139, 0, 1140, 1141, 0, - 0, 1138, 1139, 0, 1140, 1138, 1139, 0, 1140, 0, - - 0, 1138, 1139, 1141, 1140, 1141, 1142, 0, 1142, 0, - 1141, 1138, 1139, 1142, 1140, 1141, 1143, 0, 1142, 0, - 1144, 0, 0, 0, 0, 1143, 0, 1143, 0, 1144, - 0, 1144, 1143, 1142, 0, 1142, 1144, 1143, 0, 0, - 1142, 1144, 0, 1143, 0, 1142, 0, 1144, 1145, 0, - 1145, 0, 1143, 0, 1143, 1145, 1144, 0, 1144, 1143, - 1145, 0, 0, 1144, 1143, 0, 0, 1146, 1144, 1146, - 0, 1147, 0, 1147, 1146, 1145, 0, 1145, 1147, 1146, - 0, 0, 1145, 1147, 0, 0, 0, 1145, 0, 0, - 1148, 0, 1148, 0, 1146, 0, 1146, 1148, 1147, 0, - - 1147, 1146, 1148, 0, 0, 1147, 1146, 0, 0, 1149, - 1147, 1149, 0, 1150, 0, 1150, 1149, 1148, 0, 1148, - 1150, 1149, 0, 0, 1148, 1150, 0, 0, 0, 1148, - 0, 0, 1151, 0, 1151, 0, 1149, 0, 1149, 1151, - 1150, 0, 1150, 1149, 1151, 1152, 0, 1150, 1149, 0, - 0, 1153, 1150, 1157, 0, 1157, 1152, 0, 1152, 1151, - 1157, 1151, 1153, 1152, 1153, 1157, 1151, 0, 1152, 1153, - 0, 1151, 1152, 0, 1153, 0, 0, 1154, 1153, 0, - 1157, 0, 1157, 1152, 0, 1152, 1154, 1157, 1154, 1153, - 1152, 1153, 1157, 1154, 0, 1152, 1153, 0, 1154, 0, - - 1155, 1153, 1155, 0, 1154, 0, 1156, 1155, 1155, 0, - 0, 0, 1155, 1154, 1156, 1154, 1156, 0, 0, 0, - 1154, 1156, 0, 0, 0, 1154, 1156, 1155, 0, 1155, - 1158, 0, 1158, 1156, 1155, 1155, 0, 1158, 1159, 1155, - 1159, 1156, 1158, 1156, 1160, 1159, 1160, 0, 1156, 0, - 1159, 1160, 0, 1156, 0, 0, 1160, 1158, 0, 1158, - 0, 0, 0, 0, 1158, 1159, 0, 1159, 1161, 1158, - 1161, 1160, 1159, 1160, 1161, 1161, 0, 1159, 1160, 1162, - 1161, 1162, 1211, 1160, 1211, 0, 1162, 0, 0, 1211, - 0, 1162, 0, 0, 1211, 1161, 0, 1161, 1212, 0, - - 1212, 1161, 1161, 0, 0, 1212, 1162, 1161, 1162, 1211, - 1212, 1211, 1213, 1162, 1213, 0, 1211, 0, 1162, 1213, - 0, 1211, 0, 0, 1213, 1212, 1214, 1212, 1214, 0, - 1215, 0, 1212, 1214, 1215, 0, 0, 1212, 1214, 1213, - 1215, 1213, 0, 0, 1216, 0, 1213, 0, 1216, 0, - 1215, 1213, 1217, 1214, 1216, 1214, 1217, 1215, 0, 0, - 1214, 1215, 1217, 0, 1216, 1214, 0, 1215, 1218, 1218, - 0, 1216, 1217, 0, 1219, 1216, 0, 1215, 1219, 1217, - 0, 1216, 0, 1217, 1219, 0, 0, 0, 1220, 1217, - 0, 1216, 1220, 1218, 1219, 0, 1220, 1218, 0, 1217, - - 0, 1219, 1220, 1218, 0, 1219, 1221, 0, 0, 0, - 1221, 1219, 1220, 1218, 0, 1220, 1221, 0, 1222, 1220, - 1218, 1219, 1222, 1220, 1218, 0, 1221, 0, 1222, 1220, - 1218, 1223, 1224, 1221, 0, 1223, 1224, 1221, 1222, 1220, - 1218, 1223, 1224, 1221, 1227, 1222, 1225, 0, 1227, 1222, - 1225, 1223, 1224, 1221, 1227, 1222, 1225, 0, 1223, 1224, - 0, 1225, 1223, 1224, 1227, 1222, 1225, 0, 1223, 1224, - 1226, 1227, 1226, 1225, 1226, 1227, 0, 1225, 1223, 1224, - 1226, 1227, 1228, 1225, 0, 1229, 1228, 0, 1225, 1229, - 1226, 1227, 1228, 1225, 0, 1229, 1230, 1226, 1230, 1226, - - 0, 1226, 1228, 1230, 0, 1229, 0, 1226, 1230, 1228, - 0, 0, 1229, 1228, 0, 0, 1229, 1226, 0, 1228, - 0, 0, 1229, 1230, 1231, 1230, 1231, 0, 0, 1228, - 1230, 1231, 1229, 0, 1233, 1230, 1231, 1232, 0, 1232, - 1234, 0, 1234, 1233, 1232, 1233, 0, 1234, 0, 1232, - 1233, 1231, 1234, 1231, 0, 1233, 0, 0, 1231, 0, - 0, 1233, 0, 1231, 1232, 0, 1232, 1234, 0, 1234, - 1233, 1232, 1233, 1235, 1234, 1235, 1232, 1233, 0, 1234, - 1235, 1236, 1233, 1236, 1237, 1235, 1237, 0, 1236, 0, - 1237, 1237, 0, 1236, 1238, 0, 1237, 0, 1238, 1239, - - 1235, 0, 1235, 1239, 1238, 0, 0, 1235, 1236, 1239, - 1236, 1237, 1235, 1237, 1238, 1236, 0, 1237, 1237, 1239, - 1236, 1238, 1240, 1237, 1240, 1238, 1239, 0, 0, 1240, - 1239, 1238, 0, 1241, 1240, 1241, 1239, 0, 0, 0, - 1241, 1238, 0, 0, 0, 1241, 1239, 0, 0, 1240, - 0, 1240, 1242, 0, 1242, 0, 1240, 1243, 0, 1242, - 1241, 1240, 1241, 1244, 1242, 1244, 1243, 1241, 1243, 0, - 1244, 1244, 1241, 1243, 0, 1244, 0, 0, 1243, 1242, - 0, 1242, 0, 0, 1243, 0, 1242, 0, 0, 0, - 1244, 1242, 1244, 1243, 0, 1243, 0, 1244, 1244, 0, - - 1243, 0, 1244, 1245, 1245, 1243, 1245, 1246, 1247, 1246, - 1247, 1245, 0, 0, 1246, 1247, 1245, 0, 0, 1246, - 1247, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1245, 1245, 0, 1245, 1246, 1247, 1246, 1247, 1245, 0, - 0, 1246, 1247, 1245, 0, 0, 1246, 1247, 1248, 0, - 1248, 1249, 0, 1249, 0, 1248, 1248, 0, 1249, 1250, - 1248, 1250, 0, 1249, 0, 1250, 1250, 1251, 1251, 1251, - 0, 1250, 0, 0, 1251, 1248, 0, 1248, 1249, 1251, - 1249, 0, 1248, 1248, 0, 1249, 1250, 1248, 1250, 0, - 1249, 0, 1250, 1250, 1251, 1251, 1251, 1252, 1250, 1252, - - 0, 1251, 0, 1253, 1252, 1252, 1251, 1253, 1254, 1252, - 0, 0, 1254, 1253, 0, 0, 0, 1255, 1254, 0, - 0, 1255, 0, 1253, 1252, 0, 1252, 1255, 1254, 0, - 1253, 1252, 1252, 0, 1253, 1254, 1252, 1255, 0, 1254, - 1253, 0, 1256, 1283, 1255, 1254, 1256, 1283, 1255, 0, - 1253, 0, 1256, 1283, 1255, 1254, 1283, 1285, 0, 0, - 0, 1285, 1256, 1283, 1255, 0, 0, 1285, 0, 1256, - 1283, 1286, 1287, 1256, 1283, 1286, 1287, 1285, 0, 1256, - 1283, 1286, 1287, 1283, 1285, 1287, 1286, 0, 1285, 1256, - 1283, 1286, 1287, 0, 1285, 0, 1288, 1289, 1286, 1287, - - 1288, 1289, 1286, 1287, 1285, 0, 1288, 1289, 1286, 1287, - 1290, 0, 1287, 1286, 1290, 0, 1288, 1289, 1286, 1287, - 1290, 0, 1293, 1288, 1289, 0, 1293, 1288, 1289, 0, - 1290, 0, 1293, 1288, 1289, 1292, 1291, 1290, 1291, 1292, - 1291, 1290, 1293, 1288, 1289, 1292, 1291, 1290, 1294, 1293, - 1292, 0, 1294, 1293, 0, 1292, 1291, 1290, 1294, 1293, - 0, 0, 1292, 1291, 0, 1291, 1292, 1291, 1294, 1293, - 0, 0, 1292, 1291, 1295, 1294, 0, 1292, 1295, 1294, - 0, 0, 1292, 1291, 1295, 1294, 1296, 1295, 1296, 0, - 0, 0, 1297, 1296, 1295, 1294, 1298, 1297, 1296, 1297, - - 1298, 1295, 0, 0, 1297, 1295, 1298, 0, 1299, 1297, - 0, 1295, 1299, 1296, 1295, 1296, 1298, 0, 1299, 1297, - 1296, 1295, 0, 1298, 1297, 1296, 1297, 1298, 1299, 0, - 1300, 1297, 0, 1298, 1300, 1299, 1297, 0, 1301, 1299, - 1300, 0, 1301, 1298, 0, 1299, 0, 0, 1301, 0, - 1300, 0, 1302, 0, 0, 1299, 1302, 1300, 1301, 0, - 1303, 1300, 1302, 0, 1303, 1301, 0, 1300, 0, 1301, - 1303, 1303, 1302, 0, 1304, 1301, 0, 1300, 1304, 1302, - 1303, 0, 1305, 1302, 1304, 1301, 1305, 1303, 0, 1302, - 0, 1303, 1305, 0, 1304, 1306, 1306, 1303, 1303, 1302, - - 1306, 1304, 1305, 1323, 1323, 1304, 1306, 1303, 0, 1305, - 1325, 1304, 0, 1305, 1325, 0, 1306, 0, 0, 1305, - 1325, 1304, 1306, 1306, 0, 0, 0, 1306, 1323, 1305, - 1325, 0, 1323, 1306, 0, 0, 1326, 1325, 1323, 0, - 1326, 1325, 0, 1306, 0, 0, 1326, 1325, 1323, 0, - 1327, 0, 0, 0, 1327, 1323, 1326, 1325, 1328, 1323, - 1327, 0, 1328, 1326, 1329, 1323, 1329, 1326, 1328, 0, - 1327, 1329, 1330, 1326, 1330, 1323, 1329, 1327, 1328, 1330, - 0, 1327, 0, 1326, 1330, 1328, 0, 1327, 0, 1328, - 0, 1329, 0, 1329, 0, 1328, 0, 1327, 1329, 1330, - - 1331, 1330, 1331, 1329, 0, 1328, 1330, 1331, 1332, 0, - 1332, 1330, 1331, 0, 1333, 1332, 1333, 0, 0, 0, - 1332, 1333, 0, 0, 0, 0, 1333, 1331, 0, 1331, - 0, 0, 0, 0, 1331, 1332, 0, 1332, 1334, 1331, - 1334, 1333, 1332, 1333, 0, 1334, 0, 1332, 1333, 0, - 1334, 1335, 0, 1333, 1336, 1335, 1347, 0, 1336, 1348, - 1347, 1335, 0, 1348, 1336, 1334, 1347, 1334, 0, 1348, - 0, 1335, 1334, 0, 1336, 0, 1347, 1334, 1335, 1348, - 0, 1336, 1335, 1347, 0, 1336, 1348, 1347, 1335, 0, - 1348, 1336, 0, 1347, 0, 1349, 1348, 0, 1335, 1349, - - 1350, 1336, 1350, 1347, 0, 1349, 1348, 1350, 0, 1358, - 0, 1358, 1350, 0, 0, 1349, 1358, 0, 0, 0, - 0, 1358, 1349, 0, 0, 0, 1349, 1350, 0, 1350, - 0, 0, 1349, 0, 1350, 0, 1358, 0, 1358, 1350, - 0, 0, 1349, 1358, 0, 0, 0, 0, 1358, 1390, - 1390, 1390, 1390, 1390, 1391, 0, 0, 1391, 1391, 1393, - 1393, 1393, 0, 1393, 1394, 0, 1394, 1394, 1394, 1395, - 0, 1395, 1395, 1395, 1396, 0, 1396, 1396, 1396, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389 + 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, + 41, 23, 24, 44, 23, 25, 24, 25, 49, 49, + 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, + 55, 32, 50, 50, 33, 43, 43, 58, 58, 24, + 1364, 55, 25, 24, 25, 1363, 34, 24, 32, 25, + 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, + 34, 33, 43, 43, 100, 26, 34, 34, 26, 103, + 36, 26, 29, 34, 26, 1362, 36, 26, 29, 29, + + 29, 42, 86, 86, 26, 29, 36, 34, 1361, 42, + 1359, 100, 26, 34, 34, 26, 103, 36, 26, 29, + 1357, 26, 35, 36, 26, 29, 29, 29, 42, 104, + 35, 38, 29, 101, 35, 38, 42, 35, 35, 38, + 81, 101, 81, 106, 81, 38, 1355, 81, 1353, 35, + 102, 1351, 81, 102, 1349, 107, 104, 35, 38, 1347, + 101, 35, 38, 1345, 35, 35, 38, 81, 101, 81, + 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, + 102, 39, 107, 39, 113, 39, 39, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 188, 188, 1343, + + 39, 1341, 39, 110, 1339, 39, 105, 105, 39, 109, + 39, 113, 39, 39, 40, 112, 109, 67, 40, 67, + 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, + 117, 40, 1337, 105, 105, 1333, 109, 1155, 1155, 1288, + 1288, 40, 112, 109, 67, 40, 67, 105, 40, 40, + 67, 67, 112, 116, 116, 40, 67, 117, 40, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, + 68, 114, 1329, 1322, 68, 1315, 114, 121, 68, 61, + 61, 61, 70, 123, 68, 61, 70, 61, 124, 118, + + 120, 120, 70, 61, 68, 61, 119, 68, 114, 61, + 61, 68, 70, 114, 121, 68, 125, 127, 1301, 70, + 123, 68, 61, 70, 61, 124, 1287, 120, 120, 70, + 61, 68, 61, 1263, 128, 1239, 61, 61, 1193, 70, + 1147, 1072, 997, 125, 127, 61, 62, 62, 898, 62, + 62, 62, 62, 62, 62, 799, 671, 129, 71, 72, + 73, 128, 71, 72, 73, 62, 62, 62, 71, 72, + 73, 130, 62, 77, 132, 126, 62, 77, 71, 72, + 73, 126, 62, 77, 129, 71, 72, 73, 133, 71, + 72, 73, 62, 77, 543, 71, 72, 73, 130, 62, + + 77, 132, 126, 62, 77, 71, 72, 73, 126, 62, + 77, 416, 288, 83, 135, 133, 83, 83, 136, 62, + 77, 62, 63, 83, 78, 192, 63, 138, 78, 63, + 63, 131, 78, 83, 131, 190, 63, 139, 78, 63, + 83, 135, 63, 83, 83, 136, 63, 90, 78, 63, + 83, 78, 137, 63, 138, 78, 63, 63, 131, 78, + 83, 131, 137, 63, 139, 78, 63, 137, 137, 63, + 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, + 82, 84, 64, 140, 141, 144, 82, 84, 64, 137, + 142, 64, 142, 145, 137, 137, 82, 84, 64, 82, + + 60, 64, 59, 82, 84, 64, 52, 82, 84, 64, + 140, 141, 144, 82, 84, 64, 51, 142, 64, 142, + 145, 146, 147, 82, 84, 64, 65, 111, 111, 111, + 65, 111, 115, 65, 115, 65, 65, 115, 149, 143, + 65, 143, 150, 115, 151, 65, 65, 47, 146, 147, + 115, 45, 143, 65, 111, 111, 111, 65, 111, 115, + 65, 115, 65, 65, 115, 149, 143, 65, 143, 150, + 115, 151, 65, 65, 66, 148, 153, 115, 148, 143, + 154, 66, 66, 155, 156, 66, 157, 122, 66, 122, + 159, 66, 158, 122, 66, 20, 158, 161, 19, 163, + + 122, 66, 148, 153, 122, 148, 11, 154, 66, 66, + 155, 156, 66, 157, 122, 66, 122, 159, 66, 158, + 122, 66, 69, 158, 161, 162, 163, 122, 69, 69, + 69, 122, 160, 165, 164, 69, 162, 160, 166, 167, + 69, 7, 168, 164, 169, 160, 170, 165, 4, 69, + 160, 164, 162, 172, 173, 69, 69, 69, 3, 160, + 165, 164, 69, 162, 160, 166, 167, 69, 74, 168, + 164, 169, 160, 170, 165, 74, 171, 160, 164, 174, + 172, 173, 74, 177, 176, 74, 0, 171, 74, 74, + 0, 176, 178, 175, 176, 74, 0, 0, 181, 179, + + 182, 183, 74, 171, 0, 179, 174, 0, 291, 74, + 177, 176, 74, 175, 171, 74, 74, 75, 176, 178, + 175, 176, 75, 180, 75, 181, 179, 182, 183, 293, + 75, 75, 179, 294, 75, 291, 180, 75, 75, 0, + 175, 0, 0, 0, 75, 0, 0, 0, 0, 75, + 180, 75, 0, 0, 0, 296, 293, 75, 75, 0, + 294, 75, 208, 180, 75, 75, 76, 208, 200, 208, + 201, 201, 200, 76, 208, 201, 298, 76, 200, 208, + 76, 201, 296, 76, 299, 300, 76, 0, 200, 208, + 301, 201, 0, 76, 208, 200, 208, 201, 201, 200, + + 76, 208, 201, 298, 76, 200, 208, 76, 201, 0, + 76, 299, 300, 76, 79, 200, 79, 301, 201, 79, + 79, 302, 79, 203, 79, 203, 79, 79, 0, 0, + 203, 203, 0, 0, 303, 203, 79, 0, 0, 0, + 0, 79, 0, 79, 0, 0, 79, 79, 302, 79, + 203, 79, 203, 79, 79, 202, 209, 203, 203, 202, + 209, 303, 203, 79, 80, 202, 209, 205, 80, 205, + 202, 80, 80, 205, 205, 202, 209, 305, 80, 205, + 306, 80, 202, 209, 307, 308, 202, 209, 80, 0, + 0, 80, 202, 209, 205, 80, 205, 202, 80, 80, + + 205, 205, 202, 209, 305, 80, 205, 306, 80, 0, + 0, 307, 308, 0, 0, 80, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 204, 206, + 304, 204, 304, 309, 310, 311, 312, 0, 206, 204, + 206, 204, 313, 314, 210, 206, 204, 304, 210, 315, + + 206, 204, 0, 0, 210, 204, 206, 304, 204, 304, + 309, 310, 311, 312, 210, 206, 204, 206, 204, 313, + 314, 210, 206, 204, 304, 210, 315, 206, 204, 207, + 207, 210, 211, 316, 211, 207, 0, 207, 317, 211, + 212, 210, 207, 207, 211, 319, 320, 207, 321, 322, + 0, 212, 323, 212, 0, 324, 207, 207, 212, 211, + 316, 211, 207, 212, 207, 317, 211, 212, 0, 207, + 207, 211, 319, 320, 207, 321, 322, 214, 212, 323, + 212, 214, 324, 325, 0, 212, 318, 214, 0, 0, + 212, 213, 213, 213, 0, 213, 215, 214, 213, 0, + + 215, 318, 327, 213, 214, 221, 215, 221, 214, 215, + 325, 216, 221, 318, 214, 216, 215, 221, 213, 213, + 213, 216, 213, 215, 214, 213, 216, 215, 318, 327, + 213, 216, 221, 215, 221, 328, 215, 0, 216, 221, + 0, 329, 216, 215, 221, 0, 0, 0, 216, 330, + 0, 0, 0, 216, 331, 0, 332, 333, 216, 217, + 0, 217, 328, 0, 217, 334, 335, 218, 329, 218, + 217, 0, 217, 218, 218, 0, 330, 217, 219, 218, + 219, 331, 217, 332, 333, 219, 217, 219, 217, 336, + 219, 217, 334, 335, 218, 337, 218, 217, 220, 217, + + 218, 218, 220, 337, 217, 219, 218, 219, 220, 217, + 338, 339, 219, 340, 219, 223, 336, 219, 220, 0, + 0, 341, 337, 227, 223, 220, 223, 227, 0, 220, + 337, 223, 225, 227, 225, 220, 223, 338, 339, 225, + 340, 342, 223, 227, 225, 220, 222, 222, 341, 0, + 227, 223, 343, 223, 227, 222, 0, 222, 223, 225, + 227, 225, 222, 223, 344, 345, 225, 222, 342, 346, + 227, 225, 347, 222, 222, 348, 226, 349, 226, 343, + 0, 0, 222, 226, 222, 0, 0, 0, 226, 222, + 0, 344, 345, 0, 222, 224, 346, 224, 0, 347, + + 0, 224, 348, 226, 349, 226, 350, 224, 224, 229, + 226, 352, 224, 229, 228, 226, 228, 224, 0, 229, + 228, 228, 224, 353, 224, 230, 228, 230, 224, 229, + 0, 355, 230, 350, 224, 224, 229, 230, 352, 224, + 229, 228, 356, 228, 224, 231, 229, 228, 228, 231, + 353, 0, 230, 228, 230, 231, 229, 232, 355, 230, + 357, 232, 358, 351, 230, 231, 360, 232, 233, 356, + 233, 361, 231, 351, 362, 233, 231, 232, 233, 234, + 233, 234, 231, 0, 232, 0, 234, 357, 232, 358, + 351, 234, 231, 360, 232, 233, 363, 233, 361, 364, + + 351, 362, 233, 0, 232, 233, 234, 233, 234, 236, + 235, 236, 235, 234, 366, 359, 236, 235, 234, 235, + 237, 236, 235, 363, 237, 359, 364, 0, 0, 0, + 237, 0, 0, 0, 0, 367, 236, 235, 236, 235, + 237, 366, 359, 236, 235, 368, 235, 237, 236, 235, + 238, 237, 359, 369, 238, 241, 240, 237, 240, 241, + 238, 238, 367, 240, 370, 241, 371, 237, 240, 372, + 238, 0, 368, 0, 242, 241, 0, 238, 242, 0, + 369, 238, 241, 240, 242, 240, 241, 238, 238, 0, + 240, 370, 241, 371, 242, 240, 372, 238, 239, 243, + + 243, 242, 241, 243, 373, 242, 239, 374, 239, 243, + 246, 242, 246, 239, 239, 0, 246, 246, 239, 243, + 0, 242, 246, 373, 0, 239, 243, 243, 0, 0, + 243, 373, 0, 239, 374, 239, 243, 246, 257, 246, + 239, 239, 257, 246, 246, 239, 243, 244, 257, 246, + 373, 244, 247, 244, 247, 244, 260, 244, 257, 247, + 260, 376, 377, 0, 247, 257, 260, 244, 0, 257, + 0, 0, 378, 0, 244, 257, 260, 375, 244, 247, + 244, 247, 244, 260, 244, 257, 247, 260, 376, 377, + 375, 247, 0, 260, 244, 245, 379, 245, 248, 378, + + 248, 380, 381, 260, 375, 248, 245, 249, 245, 249, + 248, 382, 383, 245, 249, 249, 384, 375, 245, 249, + 0, 385, 245, 379, 245, 248, 386, 248, 380, 381, + 0, 0, 248, 245, 249, 245, 249, 248, 382, 383, + 245, 249, 249, 384, 0, 245, 249, 250, 385, 250, + 251, 0, 251, 386, 250, 250, 0, 251, 250, 250, + 252, 0, 251, 254, 387, 254, 389, 0, 390, 0, + 254, 252, 0, 252, 250, 254, 250, 251, 252, 251, + 0, 250, 250, 252, 251, 250, 250, 252, 253, 251, + 254, 387, 254, 389, 253, 390, 253, 254, 252, 255, + + 252, 253, 254, 0, 391, 252, 253, 255, 0, 255, + 252, 0, 0, 392, 255, 253, 393, 394, 0, 255, + 395, 253, 0, 253, 0, 396, 255, 397, 253, 0, + 256, 391, 256, 253, 255, 258, 255, 256, 256, 258, + 392, 255, 256, 393, 394, 258, 255, 395, 258, 261, + 0, 261, 396, 398, 397, 258, 261, 256, 399, 256, + 0, 261, 258, 259, 256, 256, 258, 259, 401, 256, + 403, 259, 258, 0, 263, 258, 261, 259, 261, 263, + 398, 263, 258, 261, 405, 399, 263, 259, 261, 0, + 259, 263, 0, 0, 259, 401, 0, 403, 259, 0, + + 402, 263, 0, 0, 259, 264, 263, 264, 263, 402, + 0, 405, 264, 263, 259, 262, 264, 264, 263, 265, + 262, 406, 407, 265, 0, 265, 262, 402, 262, 404, + 265, 404, 264, 262, 264, 265, 402, 267, 262, 264, + 408, 267, 262, 264, 264, 267, 265, 262, 406, 407, + 265, 267, 265, 262, 0, 262, 404, 265, 404, 268, + 262, 267, 265, 268, 267, 262, 266, 408, 267, 268, + 409, 410, 267, 411, 413, 266, 0, 266, 267, 268, + 0, 269, 266, 266, 0, 269, 268, 266, 267, 269, + 268, 0, 0, 266, 0, 269, 268, 409, 410, 412, + + 411, 413, 266, 412, 266, 269, 268, 270, 269, 266, + 266, 270, 269, 414, 266, 271, 269, 270, 272, 271, + 270, 272, 269, 271, 544, 272, 412, 270, 545, 271, + 412, 272, 269, 0, 270, 0, 546, 547, 270, 271, + 414, 272, 271, 548, 270, 272, 271, 270, 272, 274, + 271, 544, 272, 274, 270, 545, 271, 0, 272, 274, + 273, 273, 273, 546, 547, 549, 271, 273, 272, 274, + 548, 275, 273, 276, 550, 275, 274, 276, 0, 275, + 274, 275, 551, 276, 276, 0, 274, 273, 273, 273, + 0, 275, 549, 276, 273, 0, 274, 552, 275, 273, + + 276, 550, 275, 280, 276, 277, 275, 280, 275, 551, + 276, 276, 277, 280, 554, 557, 279, 279, 275, 277, + 276, 279, 277, 280, 552, 277, 0, 279, 0, 0, + 280, 558, 277, 0, 280, 0, 0, 279, 0, 277, + 280, 554, 557, 279, 279, 559, 277, 560, 279, 277, + 280, 0, 277, 278, 279, 281, 278, 281, 558, 562, + 278, 281, 281, 278, 279, 282, 278, 281, 0, 282, + 563, 564, 559, 0, 560, 282, 278, 0, 282, 565, + 278, 567, 281, 278, 281, 282, 562, 278, 281, 281, + 278, 283, 282, 278, 281, 283, 282, 563, 564, 0, + + 284, 283, 282, 278, 284, 282, 565, 568, 567, 285, + 284, 283, 282, 285, 422, 284, 422, 285, 283, 569, + 284, 422, 283, 285, 570, 571, 422, 284, 283, 572, + 573, 284, 574, 285, 568, 0, 285, 284, 283, 0, + 285, 422, 284, 422, 285, 0, 569, 284, 422, 0, + 285, 570, 571, 422, 0, 0, 572, 573, 0, 574, + 285, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 289, 417, 417, 417, 417, 417, 417, 417, 417, 417, + 417, 418, 419, 420, 421, 418, 419, 420, 421, 575, + 578, 418, 419, 420, 421, 0, 579, 580, 0, 581, + + 0, 418, 419, 420, 421, 0, 0, 0, 418, 419, + 420, 421, 418, 419, 420, 421, 575, 578, 418, 419, + 420, 421, 424, 579, 580, 423, 581, 423, 418, 419, + 420, 421, 423, 424, 425, 424, 425, 423, 426, 0, + 424, 425, 426, 0, 582, 424, 425, 0, 426, 424, + 583, 0, 423, 584, 423, 585, 0, 0, 426, 423, + 424, 425, 424, 425, 423, 426, 427, 424, 425, 426, + 427, 582, 424, 425, 428, 426, 427, 583, 428, 429, + 584, 587, 585, 429, 428, 426, 427, 0, 430, 429, + 430, 588, 428, 427, 428, 430, 589, 427, 590, 429, + + 430, 428, 431, 427, 431, 428, 429, 593, 587, 431, + 429, 428, 594, 427, 431, 430, 429, 430, 588, 428, + 433, 428, 430, 589, 433, 590, 429, 430, 0, 431, + 433, 431, 0, 433, 593, 0, 431, 0, 0, 594, + 433, 431, 432, 0, 432, 434, 596, 433, 432, 434, + 598, 433, 599, 0, 432, 434, 600, 433, 435, 432, + 433, 434, 435, 0, 432, 434, 435, 433, 435, 432, + 437, 432, 434, 596, 437, 432, 434, 598, 435, 599, + 437, 432, 434, 600, 0, 435, 432, 0, 434, 435, + 437, 432, 434, 435, 436, 435, 0, 437, 436, 0, + + 601, 437, 438, 602, 436, 435, 438, 437, 603, 436, + 438, 439, 0, 439, 436, 0, 438, 437, 439, 606, + 0, 436, 0, 439, 0, 436, 438, 601, 604, 438, + 602, 436, 610, 438, 612, 603, 436, 438, 439, 604, + 439, 436, 440, 438, 440, 439, 606, 441, 440, 440, + 439, 441, 613, 438, 440, 604, 442, 441, 442, 610, + 615, 612, 617, 442, 618, 0, 604, 441, 442, 440, + 443, 440, 443, 0, 441, 440, 440, 443, 441, 613, + 0, 440, 443, 442, 441, 442, 0, 615, 444, 617, + 442, 618, 444, 619, 441, 442, 0, 443, 444, 443, + + 616, 616, 445, 446, 443, 621, 445, 446, 444, 443, + 445, 0, 622, 446, 623, 444, 445, 624, 446, 444, + 619, 0, 626, 446, 0, 444, 445, 616, 616, 445, + 446, 0, 621, 445, 446, 444, 447, 445, 447, 622, + 446, 623, 447, 445, 624, 446, 627, 448, 447, 626, + 446, 448, 0, 445, 629, 0, 449, 448, 447, 0, + 449, 630, 631, 447, 632, 447, 449, 448, 0, 447, + 0, 449, 0, 627, 448, 447, 449, 0, 448, 450, + 0, 629, 450, 449, 448, 447, 450, 449, 630, 631, + 0, 632, 450, 449, 448, 452, 634, 451, 449, 452, + + 453, 451, 450, 449, 453, 452, 450, 451, 451, 450, + 453, 635, 636, 450, 0, 452, 637, 451, 0, 450, + 453, 638, 452, 634, 451, 640, 452, 453, 451, 450, + 641, 453, 452, 0, 451, 451, 454, 453, 635, 636, + 454, 455, 452, 637, 451, 455, 454, 453, 638, 455, + 456, 0, 640, 0, 456, 455, 454, 641, 642, 458, + 456, 458, 459, 454, 459, 455, 458, 454, 455, 459, + 456, 458, 455, 454, 459, 0, 455, 456, 457, 0, + 457, 456, 455, 454, 457, 642, 458, 456, 458, 459, + 457, 459, 455, 458, 643, 646, 459, 456, 458, 0, + + 457, 459, 460, 647, 460, 457, 462, 457, 460, 460, + 462, 457, 648, 461, 460, 461, 462, 457, 649, 650, + 461, 643, 646, 653, 463, 461, 462, 457, 463, 460, + 647, 460, 463, 462, 0, 460, 460, 462, 463, 648, + 461, 460, 461, 462, 654, 649, 650, 461, 463, 656, + 653, 463, 461, 462, 464, 463, 464, 657, 658, 463, + 465, 464, 0, 659, 465, 463, 464, 660, 465, 466, + 465, 654, 661, 466, 0, 463, 656, 466, 662, 466, + 465, 464, 663, 464, 657, 658, 0, 465, 464, 466, + 659, 465, 0, 464, 660, 465, 466, 465, 0, 661, + + 466, 467, 468, 467, 466, 662, 466, 465, 467, 663, + 0, 664, 468, 467, 468, 666, 466, 0, 668, 468, + 0, 0, 670, 0, 468, 469, 0, 469, 467, 468, + 467, 0, 469, 0, 469, 467, 0, 469, 664, 468, + 467, 468, 666, 471, 470, 668, 468, 471, 470, 670, + 470, 468, 469, 471, 469, 470, 802, 0, 472, 469, + 470, 469, 472, 471, 469, 0, 804, 0, 472, 0, + 471, 470, 806, 472, 471, 470, 807, 470, 472, 0, + 471, 808, 470, 802, 473, 472, 809, 470, 473, 472, + 471, 0, 474, 804, 473, 472, 474, 473, 474, 806, + + 472, 0, 474, 807, 473, 472, 475, 0, 808, 0, + 475, 473, 474, 809, 810, 473, 475, 0, 476, 474, + 811, 473, 476, 474, 473, 474, 475, 0, 476, 474, + 477, 473, 478, 475, 477, 812, 478, 475, 476, 474, + 477, 810, 478, 475, 479, 476, 813, 811, 479, 476, + 477, 0, 478, 475, 479, 476, 480, 477, 0, 478, + 480, 477, 812, 478, 479, 476, 480, 477, 814, 478, + 816, 479, 480, 813, 817, 479, 480, 477, 481, 478, + 481, 479, 482, 480, 482, 481, 0, 480, 818, 482, + 481, 479, 0, 480, 482, 814, 0, 816, 819, 480, + + 484, 817, 0, 480, 484, 481, 483, 481, 483, 482, + 484, 482, 481, 483, 483, 818, 482, 481, 483, 485, + 484, 482, 488, 485, 488, 819, 488, 484, 820, 485, + 0, 484, 488, 483, 0, 483, 821, 484, 823, 485, + 483, 483, 488, 486, 486, 483, 485, 484, 486, 488, + 485, 488, 824, 488, 486, 820, 485, 491, 489, 488, + 489, 491, 489, 821, 486, 823, 485, 491, 489, 488, + 486, 486, 491, 0, 825, 486, 0, 491, 489, 824, + 826, 486, 0, 827, 491, 489, 0, 489, 491, 489, + 828, 486, 487, 490, 491, 489, 487, 490, 0, 491, + + 487, 825, 487, 490, 491, 489, 487, 826, 829, 490, + 827, 0, 830, 490, 0, 0, 487, 828, 492, 487, + 490, 493, 492, 487, 490, 493, 831, 487, 492, 487, + 490, 493, 832, 487, 492, 829, 490, 833, 492, 830, + 490, 493, 494, 487, 836, 492, 494, 0, 493, 492, + 494, 837, 493, 831, 0, 492, 494, 838, 493, 832, + 495, 492, 495, 0, 833, 492, 494, 495, 493, 494, + 839, 836, 495, 494, 496, 0, 496, 494, 837, 0, + 496, 496, 840, 494, 838, 0, 496, 495, 497, 495, + 497, 841, 498, 494, 495, 497, 498, 839, 0, 495, + + 497, 496, 498, 496, 0, 844, 499, 496, 496, 840, + 499, 847, 498, 496, 0, 497, 499, 497, 841, 498, + 0, 500, 497, 498, 848, 500, 499, 497, 502, 498, + 502, 500, 844, 499, 500, 502, 0, 499, 847, 498, + 502, 500, 0, 499, 850, 853, 0, 506, 500, 506, + 0, 848, 500, 499, 506, 502, 0, 502, 500, 506, + 856, 500, 502, 504, 504, 504, 0, 502, 500, 501, + 504, 850, 853, 501, 506, 504, 506, 501, 857, 0, + 858, 506, 849, 501, 859, 849, 506, 856, 501, 860, + 504, 504, 504, 501, 0, 861, 501, 504, 864, 865, + + 501, 505, 504, 0, 501, 857, 505, 858, 505, 849, + 501, 859, 849, 505, 866, 501, 860, 867, 505, 507, + 501, 503, 861, 507, 868, 864, 865, 0, 505, 507, + 503, 0, 503, 505, 503, 505, 870, 503, 871, 507, + 505, 866, 503, 0, 867, 505, 507, 0, 503, 872, + 507, 868, 874, 0, 508, 0, 507, 503, 508, 503, + 0, 503, 508, 870, 503, 871, 507, 509, 508, 503, + 510, 509, 875, 510, 510, 0, 872, 509, 508, 874, + 510, 508, 509, 0, 511, 508, 511, 509, 0, 508, + 510, 511, 876, 0, 509, 508, 511, 510, 509, 875, + + 510, 510, 513, 0, 509, 508, 513, 510, 512, 509, + 512, 511, 513, 511, 509, 512, 877, 510, 511, 876, + 512, 514, 513, 511, 515, 514, 516, 879, 515, 513, + 516, 514, 880, 513, 515, 512, 516, 512, 520, 513, + 520, 514, 512, 877, 515, 520, 516, 512, 514, 513, + 520, 515, 514, 516, 879, 515, 517, 516, 514, 880, + 517, 515, 881, 516, 882, 520, 517, 520, 514, 517, + 518, 515, 520, 516, 518, 519, 517, 520, 883, 519, + 518, 884, 885, 517, 886, 519, 519, 517, 518, 881, + 518, 882, 521, 517, 521, 519, 517, 518, 887, 521, + + 521, 518, 519, 517, 521, 883, 519, 518, 884, 885, + 0, 886, 519, 519, 0, 518, 522, 518, 522, 521, + 889, 521, 519, 522, 522, 887, 521, 521, 522, 890, + 523, 521, 523, 891, 524, 893, 524, 523, 524, 894, + 895, 524, 523, 522, 998, 522, 524, 889, 0, 0, + 522, 522, 0, 0, 0, 522, 890, 523, 0, 523, + 891, 524, 893, 524, 523, 524, 894, 895, 524, 523, + 525, 998, 525, 524, 526, 527, 526, 525, 525, 527, + 528, 526, 525, 1000, 528, 527, 526, 0, 1002, 0, + 528, 1003, 1004, 1005, 0, 527, 0, 525, 1007, 525, + + 528, 526, 527, 526, 525, 525, 527, 528, 526, 525, + 1000, 528, 527, 526, 529, 1002, 529, 528, 1003, 1004, + 1005, 529, 527, 530, 531, 1007, 529, 528, 531, 0, + 530, 1009, 530, 0, 531, 1010, 1011, 530, 1012, 0, + 1013, 529, 530, 529, 531, 1015, 1017, 0, 529, 0, + 530, 531, 0, 529, 1019, 531, 532, 530, 1009, 530, + 532, 531, 1010, 1011, 530, 1012, 532, 1013, 532, 530, + 533, 531, 1015, 1017, 533, 0, 532, 535, 534, 535, + 533, 1019, 534, 532, 535, 0, 534, 532, 1022, 535, + 533, 0, 534, 532, 0, 532, 0, 533, 0, 0, + + 0, 533, 534, 532, 535, 534, 535, 533, 0, 534, + 1024, 535, 537, 534, 1025, 1022, 535, 533, 536, 534, + 536, 537, 1026, 537, 538, 536, 538, 536, 537, 534, + 536, 538, 0, 537, 0, 538, 538, 1024, 1027, 537, + 0, 1025, 1034, 0, 0, 536, 0, 536, 537, 1026, + 537, 538, 536, 538, 536, 537, 1035, 536, 538, 539, + 537, 539, 538, 538, 1036, 1027, 539, 539, 540, 1034, + 540, 539, 1039, 541, 540, 540, 0, 541, 0, 541, + 540, 1041, 0, 1035, 541, 0, 539, 0, 539, 541, + 1043, 1036, 0, 539, 539, 540, 0, 540, 539, 1039, + + 541, 540, 540, 542, 541, 542, 541, 540, 1041, 542, + 542, 541, 672, 1045, 672, 542, 541, 1043, 672, 672, + 0, 673, 1046, 673, 672, 0, 0, 673, 673, 0, + 542, 1047, 542, 673, 0, 0, 542, 542, 0, 672, + 1045, 672, 542, 674, 0, 672, 672, 674, 673, 1046, + 673, 672, 675, 674, 673, 673, 675, 1048, 1047, 677, + 673, 677, 675, 674, 1049, 676, 677, 1050, 1052, 676, + 674, 677, 675, 1053, 674, 676, 0, 678, 676, 675, + 674, 678, 0, 675, 1048, 676, 677, 678, 677, 675, + 674, 1049, 676, 677, 1050, 1052, 676, 678, 677, 675, + + 1053, 1054, 676, 680, 678, 676, 0, 680, 678, 679, + 0, 679, 676, 680, 678, 681, 679, 1055, 0, 681, + 0, 679, 0, 680, 678, 681, 1057, 1059, 1054, 1061, + 680, 1062, 0, 682, 680, 681, 679, 682, 679, 1063, + 680, 682, 681, 679, 1055, 683, 681, 682, 679, 683, + 680, 1064, 681, 1057, 1059, 683, 1061, 682, 1062, 684, + 682, 1065, 681, 684, 682, 683, 1063, 685, 682, 684, + 0, 685, 683, 1070, 682, 685, 683, 1071, 1064, 684, + 0, 685, 683, 1152, 682, 686, 684, 1156, 1065, 686, + 684, 685, 683, 686, 685, 686, 684, 687, 685, 1157, + + 1070, 687, 685, 1160, 1071, 686, 684, 687, 685, 0, + 1152, 689, 686, 0, 1156, 689, 686, 687, 685, 0, + 686, 689, 686, 688, 687, 690, 1157, 688, 687, 690, + 1160, 689, 686, 688, 687, 690, 688, 1161, 689, 691, + 690, 691, 689, 688, 687, 690, 691, 1162, 689, 692, + 688, 691, 690, 692, 688, 0, 690, 0, 689, 692, + 688, 694, 690, 688, 1161, 694, 691, 690, 691, 692, + 688, 694, 690, 691, 1162, 693, 692, 0, 691, 693, + 692, 694, 695, 0, 695, 693, 692, 702, 694, 695, + 693, 702, 694, 1166, 695, 693, 692, 702, 694, 0, + + 1169, 0, 693, 696, 696, 696, 693, 702, 694, 695, + 696, 695, 693, 1170, 702, 696, 695, 693, 702, 0, + 1166, 695, 693, 1173, 702, 1174, 697, 1169, 697, 1175, + 696, 696, 696, 697, 702, 697, 1176, 696, 697, 698, + 1170, 698, 696, 1179, 0, 1180, 698, 698, 1181, 0, + 1173, 698, 1174, 697, 0, 697, 1175, 0, 699, 0, + 697, 1184, 697, 1176, 1186, 697, 698, 1187, 698, 699, + 1179, 699, 1180, 698, 698, 1181, 699, 700, 698, 700, + 0, 699, 1188, 700, 700, 699, 701, 1189, 1184, 700, + 1190, 1186, 0, 0, 1187, 701, 699, 701, 699, 0, + + 1240, 1243, 701, 699, 700, 1247, 700, 701, 699, 1188, + 700, 700, 0, 701, 1189, 1248, 700, 1190, 703, 704, + 703, 704, 701, 1251, 701, 703, 704, 1240, 1243, 701, + 703, 704, 1247, 1252, 701, 1241, 1241, 705, 0, 705, + 1253, 1254, 1248, 0, 705, 703, 704, 703, 704, 705, + 1251, 1258, 703, 704, 0, 706, 1259, 703, 704, 1260, + 1252, 1262, 0, 706, 705, 706, 705, 1253, 1254, 1289, + 706, 705, 1290, 1241, 1293, 706, 705, 707, 1258, 707, + 0, 707, 706, 1259, 707, 0, 1260, 0, 1262, 707, + 706, 708, 706, 708, 0, 708, 1289, 706, 708, 1290, + + 1241, 1293, 706, 708, 707, 709, 707, 709, 707, 1296, + 0, 707, 709, 1299, 709, 0, 707, 709, 708, 710, + 708, 710, 708, 0, 711, 708, 710, 710, 0, 1303, + 708, 710, 709, 0, 709, 711, 1296, 711, 0, 709, + 1299, 709, 711, 1317, 709, 713, 710, 711, 710, 713, + 712, 711, 0, 710, 710, 713, 1303, 1321, 710, 1316, + 1316, 712, 711, 712, 711, 713, 0, 0, 712, 711, + 1317, 714, 713, 712, 711, 714, 713, 712, 0, 715, + 1324, 714, 713, 715, 1321, 1330, 0, 1334, 712, 715, + 712, 714, 713, 716, 715, 712, 0, 716, 714, 715, + + 712, 1316, 714, 716, 0, 717, 715, 1324, 714, 717, + 715, 1338, 1330, 716, 1334, 717, 715, 1340, 714, 718, + 716, 715, 0, 718, 716, 717, 715, 718, 1316, 1342, + 716, 719, 717, 718, 0, 719, 717, 1344, 1338, 1346, + 716, 719, 717, 718, 1340, 720, 718, 1348, 0, 720, + 718, 719, 717, 721, 718, 720, 1342, 721, 719, 0, + 718, 721, 719, 1350, 1344, 720, 1346, 721, 719, 0, + 718, 1352, 720, 0, 1348, 722, 720, 721, 719, 722, + 721, 1354, 720, 723, 721, 722, 722, 723, 721, 724, + 1350, 724, 720, 723, 721, 722, 724, 0, 1352, 1323, + + 1323, 724, 722, 723, 721, 0, 722, 1356, 1354, 0, + 723, 727, 722, 722, 723, 727, 724, 725, 724, 725, + 723, 727, 722, 724, 725, 726, 0, 726, 724, 725, + 723, 727, 726, 729, 1356, 729, 0, 726, 727, 0, + 729, 1323, 727, 0, 725, 729, 725, 0, 727, 0, + 0, 725, 726, 728, 726, 0, 725, 728, 727, 726, + 729, 0, 729, 728, 726, 0, 728, 729, 1323, 730, + 0, 730, 729, 728, 0, 730, 730, 0, 0, 0, + 728, 730, 1265, 1265, 728, 731, 0, 731, 0, 0, + 728, 731, 731, 728, 0, 0, 730, 731, 730, 733, + + 728, 733, 730, 730, 0, 0, 733, 0, 730, 0, + 0, 733, 731, 0, 731, 0, 0, 0, 731, 731, + 1265, 0, 0, 0, 731, 732, 733, 734, 733, 734, + 732, 0, 732, 733, 734, 0, 732, 732, 733, 734, + 0, 735, 732, 735, 0, 0, 0, 1265, 735, 0, + 0, 0, 732, 735, 734, 0, 734, 732, 0, 732, + 736, 734, 736, 732, 732, 0, 734, 736, 735, 732, + 735, 737, 736, 737, 738, 735, 738, 0, 737, 0, + 735, 738, 738, 737, 0, 0, 738, 736, 0, 736, + 739, 0, 739, 0, 736, 0, 0, 739, 737, 736, + + 737, 738, 739, 738, 740, 737, 740, 0, 738, 738, + 737, 740, 0, 738, 0, 0, 740, 739, 0, 739, + 0, 0, 741, 0, 739, 0, 741, 0, 0, 739, + 742, 740, 741, 740, 742, 743, 0, 0, 740, 743, + 742, 0, 741, 740, 744, 743, 744, 0, 0, 741, + 742, 744, 744, 741, 745, 743, 744, 742, 745, 741, + 745, 742, 743, 0, 0, 745, 743, 742, 0, 741, + 745, 744, 743, 744, 0, 0, 0, 742, 744, 744, + 0, 745, 743, 744, 746, 745, 746, 745, 0, 747, + 746, 746, 745, 747, 748, 0, 746, 745, 748, 747, + + 749, 0, 749, 769, 748, 769, 749, 0, 0, 747, + 769, 746, 749, 746, 748, 769, 747, 746, 746, 0, + 747, 748, 749, 746, 750, 748, 747, 749, 750, 749, + 769, 748, 769, 749, 750, 0, 747, 769, 0, 749, + 0, 748, 769, 751, 750, 0, 0, 751, 0, 749, + 0, 750, 0, 751, 0, 750, 751, 774, 0, 774, + 0, 750, 752, 751, 774, 0, 752, 0, 0, 774, + 751, 750, 752, 0, 751, 752, 0, 753, 0, 0, + 751, 753, 752, 751, 774, 0, 774, 753, 0, 752, + 751, 774, 0, 752, 0, 0, 774, 753, 0, 752, + + 0, 0, 752, 754, 753, 0, 755, 754, 753, 752, + 755, 754, 0, 754, 753, 756, 755, 0, 0, 756, + 0, 0, 0, 754, 753, 756, 755, 0, 0, 0, + 754, 0, 0, 755, 754, 756, 0, 755, 754, 0, + 754, 757, 756, 755, 0, 757, 756, 0, 0, 0, + 754, 757, 756, 755, 0, 758, 759, 0, 0, 758, + 759, 757, 756, 758, 759, 0, 0, 0, 757, 758, + 759, 0, 757, 0, 0, 0, 0, 0, 757, 758, + 759, 0, 758, 759, 0, 760, 758, 759, 757, 760, + 758, 759, 0, 0, 761, 760, 758, 759, 761, 0, + + 0, 0, 0, 0, 761, 760, 758, 759, 0, 0, + 0, 0, 760, 762, 761, 0, 760, 762, 0, 0, + 0, 761, 760, 762, 0, 761, 762, 0, 0, 0, + 0, 761, 760, 762, 0, 763, 0, 0, 764, 763, + 762, 761, 764, 763, 762, 763, 0, 0, 764, 0, + 762, 764, 0, 762, 0, 763, 0, 0, 764, 0, + 762, 0, 763, 0, 765, 764, 763, 767, 765, 764, + 763, 767, 763, 766, 765, 764, 766, 767, 764, 765, + 766, 0, 763, 0, 765, 764, 766, 767, 0, 768, + 0, 765, 0, 768, 767, 765, 766, 768, 767, 768, + + 766, 765, 0, 766, 767, 0, 765, 766, 0, 768, + 0, 765, 0, 766, 767, 771, 768, 0, 770, 771, + 768, 0, 0, 766, 768, 771, 768, 770, 772, 770, + 0, 0, 772, 773, 770, 771, 768, 773, 772, 770, + 0, 0, 771, 773, 0, 770, 771, 775, 772, 0, + 0, 775, 771, 773, 770, 772, 770, 775, 0, 772, + 773, 770, 771, 0, 773, 772, 770, 775, 0, 776, + 773, 0, 777, 776, 775, 772, 777, 778, 775, 776, + 773, 778, 777, 0, 775, 0, 0, 778, 0, 776, + 0, 779, 777, 0, 775, 779, 776, 778, 0, 777, + + 776, 779, 0, 777, 778, 0, 776, 0, 778, 777, + 0, 779, 0, 780, 778, 0, 776, 780, 779, 777, + 0, 0, 779, 780, 778, 781, 0, 781, 779, 782, + 0, 782, 781, 780, 0, 0, 782, 781, 779, 0, + 780, 782, 0, 0, 780, 0, 0, 0, 0, 0, + 780, 0, 781, 0, 781, 783, 782, 783, 782, 781, + 780, 0, 783, 782, 781, 784, 0, 783, 782, 0, + 0, 785, 0, 785, 784, 791, 784, 0, 785, 791, + 785, 784, 783, 785, 783, 791, 784, 0, 0, 783, + 0, 0, 784, 0, 783, 791, 0, 786, 785, 786, + + 785, 784, 791, 784, 786, 785, 791, 785, 784, 786, + 785, 0, 791, 784, 0, 0, 787, 0, 787, 788, + 0, 0, 791, 787, 786, 787, 786, 789, 787, 789, + 788, 786, 788, 0, 789, 789, 786, 788, 0, 789, + 0, 0, 788, 787, 0, 787, 788, 0, 0, 0, + 787, 0, 787, 790, 789, 787, 789, 788, 790, 788, + 790, 789, 789, 793, 788, 790, 789, 793, 792, 788, + 790, 792, 792, 793, 0, 0, 0, 0, 792, 0, + 790, 0, 0, 793, 0, 790, 0, 790, 792, 0, + 793, 0, 790, 0, 793, 792, 0, 790, 792, 792, + + 793, 0, 794, 795, 796, 792, 794, 795, 796, 0, + 793, 0, 794, 795, 796, 792, 797, 0, 794, 0, + 797, 0, 794, 795, 796, 798, 797, 798, 0, 794, + 795, 796, 798, 794, 795, 796, 797, 798, 0, 794, + 795, 796, 0, 797, 0, 794, 0, 797, 0, 794, + 795, 796, 798, 797, 798, 899, 0, 899, 900, 798, + 900, 0, 899, 797, 798, 900, 901, 899, 901, 902, + 900, 902, 0, 901, 0, 0, 902, 0, 901, 0, + 901, 902, 899, 0, 899, 900, 0, 900, 0, 899, + 0, 0, 900, 901, 899, 901, 902, 900, 902, 0, + + 901, 0, 903, 902, 0, 901, 903, 901, 902, 0, + 904, 905, 903, 0, 904, 905, 0, 0, 0, 0, + 904, 905, 903, 0, 0, 0, 0, 0, 0, 903, + 904, 905, 0, 903, 0, 0, 906, 904, 905, 903, + 906, 904, 905, 0, 0, 0, 906, 904, 905, 903, + 0, 906, 0, 0, 908, 908, 906, 904, 905, 908, + 907, 0, 0, 906, 907, 908, 0, 906, 907, 0, + 0, 0, 0, 906, 907, 908, 0, 0, 906, 0, + 0, 908, 908, 906, 907, 0, 908, 907, 909, 0, + 909, 907, 908, 0, 909, 907, 910, 911, 910, 911, + + 909, 907, 908, 910, 911, 911, 0, 0, 910, 911, + 909, 907, 0, 0, 0, 909, 0, 909, 912, 0, + 0, 909, 912, 910, 911, 910, 911, 909, 912, 0, + 910, 911, 911, 0, 0, 910, 911, 909, 912, 0, + 913, 915, 914, 915, 913, 912, 914, 0, 915, 912, + 913, 0, 914, 915, 916, 912, 0, 0, 916, 0, + 913, 0, 914, 0, 916, 912, 0, 913, 915, 914, + 915, 913, 917, 914, 916, 915, 917, 913, 0, 914, + 915, 916, 917, 0, 0, 916, 918, 913, 0, 914, + 918, 916, 917, 0, 918, 919, 0, 919, 0, 917, + + 918, 916, 919, 917, 0, 0, 0, 919, 920, 917, + 918, 0, 920, 918, 0, 0, 921, 918, 920, 917, + 921, 918, 919, 0, 919, 0, 921, 918, 920, 919, + 0, 0, 0, 0, 919, 920, 921, 918, 922, 920, + 0, 0, 922, 921, 0, 920, 923, 921, 922, 0, + 923, 0, 924, 921, 924, 920, 923, 0, 922, 924, + 0, 923, 0, 921, 924, 922, 923, 0, 0, 922, + 925, 0, 926, 923, 925, 922, 926, 923, 0, 924, + 925, 924, 926, 923, 0, 922, 924, 0, 923, 0, + 925, 924, 926, 923, 927, 0, 928, 925, 927, 926, + + 928, 925, 0, 926, 927, 0, 928, 925, 0, 926, + 0, 928, 0, 0, 927, 0, 928, 925, 0, 926, + 929, 927, 0, 928, 929, 927, 0, 928, 0, 0, + 929, 927, 930, 928, 930, 929, 0, 0, 928, 930, + 929, 927, 0, 928, 930, 931, 932, 929, 932, 931, + 933, 929, 932, 0, 933, 931, 0, 929, 932, 930, + 933, 930, 929, 0, 0, 931, 930, 929, 932, 0, + 933, 930, 931, 932, 934, 932, 931, 933, 934, 932, + 0, 933, 931, 0, 934, 932, 935, 933, 0, 936, + 935, 936, 931, 936, 934, 932, 935, 933, 0, 936, + + 938, 934, 938, 0, 935, 934, 935, 938, 0, 936, + 0, 934, 938, 935, 0, 937, 936, 935, 936, 937, + 936, 934, 0, 935, 0, 937, 936, 938, 0, 938, + 937, 935, 0, 935, 938, 937, 936, 0, 939, 938, + 939, 941, 937, 941, 940, 939, 937, 0, 941, 940, + 939, 940, 937, 941, 0, 0, 940, 937, 0, 0, + 0, 940, 937, 0, 0, 939, 0, 939, 941, 0, + 941, 940, 939, 0, 0, 941, 940, 939, 940, 942, + 941, 942, 943, 940, 943, 944, 942, 944, 940, 943, + 943, 942, 944, 945, 943, 945, 0, 944, 0, 0, + + 945, 0, 0, 0, 0, 945, 942, 0, 942, 943, + 0, 943, 944, 942, 944, 0, 943, 943, 942, 944, + 945, 943, 945, 946, 944, 946, 0, 945, 0, 947, + 946, 946, 945, 947, 948, 946, 948, 0, 0, 947, + 0, 948, 0, 0, 948, 0, 948, 0, 0, 947, + 946, 0, 946, 0, 0, 0, 947, 946, 946, 0, + 947, 948, 946, 948, 0, 949, 947, 949, 948, 0, + 0, 948, 949, 948, 0, 0, 947, 949, 950, 951, + 950, 951, 0, 0, 0, 950, 951, 0, 0, 0, + 950, 951, 949, 0, 949, 0, 0, 0, 0, 949, + + 0, 952, 0, 0, 949, 950, 951, 950, 951, 952, + 0, 952, 950, 951, 0, 0, 952, 950, 951, 0, + 953, 952, 953, 954, 0, 954, 0, 953, 952, 0, + 954, 0, 953, 0, 0, 954, 952, 0, 952, 0, + 0, 955, 0, 952, 0, 955, 0, 953, 952, 953, + 954, 955, 954, 956, 953, 956, 957, 954, 0, 953, + 956, 955, 954, 0, 0, 956, 0, 957, 955, 957, + 0, 0, 955, 0, 957, 0, 0, 0, 955, 957, + 956, 0, 956, 957, 0, 0, 0, 956, 955, 0, + 0, 958, 956, 958, 957, 0, 957, 0, 958, 958, + + 960, 957, 960, 958, 0, 959, 957, 960, 960, 959, + 0, 959, 960, 0, 0, 0, 959, 0, 958, 0, + 958, 959, 0, 0, 0, 958, 958, 960, 0, 960, + 958, 0, 959, 0, 960, 960, 959, 0, 959, 960, + 961, 0, 961, 959, 962, 963, 962, 961, 959, 963, + 0, 962, 961, 0, 0, 963, 962, 0, 0, 0, + 964, 0, 0, 0, 964, 963, 0, 961, 0, 961, + 964, 962, 963, 962, 961, 964, 963, 0, 962, 961, + 964, 0, 963, 962, 965, 965, 966, 964, 0, 965, + 966, 964, 963, 0, 0, 965, 966, 964, 0, 966, + + 0, 0, 964, 0, 0, 965, 966, 964, 0, 0, + 0, 965, 965, 966, 967, 968, 965, 966, 967, 968, + 0, 0, 965, 966, 967, 968, 966, 967, 0, 0, + 0, 0, 965, 966, 967, 968, 0, 0, 0, 969, + 970, 967, 968, 969, 970, 967, 968, 0, 0, 969, + 970, 967, 968, 971, 967, 0, 0, 971, 0, 969, + 970, 967, 968, 971, 973, 972, 969, 970, 973, 972, + 969, 970, 973, 971, 0, 972, 969, 970, 973, 0, + 971, 0, 0, 0, 971, 972, 969, 970, 973, 974, + 971, 973, 972, 974, 976, 973, 972, 974, 976, 973, + + 971, 0, 972, 974, 976, 973, 975, 975, 0, 976, + 0, 975, 972, 974, 976, 973, 974, 975, 0, 977, + 974, 976, 978, 977, 974, 976, 978, 975, 0, 977, + 974, 976, 978, 975, 975, 0, 976, 0, 975, 977, + 974, 976, 978, 0, 975, 0, 977, 979, 979, 978, + 977, 0, 979, 978, 975, 0, 977, 980, 979, 978, + 981, 980, 981, 0, 0, 980, 977, 981, 979, 978, + 0, 980, 981, 0, 979, 979, 0, 0, 0, 979, + 0, 980, 0, 0, 980, 979, 0, 981, 980, 981, + 0, 0, 980, 0, 981, 979, 0, 0, 980, 981, + + 982, 0, 982, 983, 0, 983, 982, 982, 980, 0, + 983, 983, 982, 984, 0, 983, 986, 0, 986, 0, + 0, 0, 0, 986, 984, 0, 984, 982, 986, 982, + 983, 984, 983, 982, 982, 0, 984, 983, 983, 982, + 984, 985, 983, 986, 0, 986, 0, 0, 0, 0, + 986, 984, 985, 984, 985, 986, 0, 0, 984, 985, + 987, 0, 987, 984, 985, 988, 0, 987, 985, 988, + 990, 0, 987, 0, 990, 988, 0, 989, 989, 985, + 990, 985, 989, 0, 0, 988, 985, 987, 989, 987, + 990, 985, 988, 0, 987, 0, 988, 990, 989, 987, + + 0, 990, 988, 0, 989, 989, 991, 990, 0, 989, + 991, 992, 988, 992, 0, 989, 991, 990, 992, 0, + 0, 993, 0, 992, 0, 989, 991, 0, 0, 0, + 0, 0, 993, 991, 993, 0, 0, 991, 992, 993, + 992, 0, 0, 991, 993, 992, 0, 994, 993, 0, + 992, 0, 0, 991, 0, 995, 0, 995, 994, 993, + 994, 993, 995, 0, 0, 994, 993, 995, 0, 0, + 994, 993, 0, 0, 994, 0, 996, 0, 996, 0, + 0, 0, 995, 996, 995, 994, 1073, 994, 996, 995, + 1073, 1074, 994, 0, 995, 1074, 1073, 994, 0, 0, + + 1075, 1074, 1075, 996, 0, 996, 1073, 1075, 0, 0, + 996, 1074, 1075, 1073, 1076, 996, 1076, 1073, 1074, 0, + 0, 1076, 1074, 1073, 0, 0, 1076, 1075, 1074, 1075, + 1077, 0, 1077, 1073, 1075, 0, 1078, 1077, 1074, 1075, + 1078, 1076, 1077, 1076, 0, 1079, 1078, 0, 1076, 1079, + 0, 0, 0, 1076, 0, 1079, 1078, 1077, 0, 1077, + 1079, 0, 0, 1078, 1077, 1079, 0, 1078, 1080, 1077, + 1080, 0, 1079, 1078, 0, 1080, 1079, 1081, 0, 1081, + 1080, 0, 1079, 1078, 1081, 0, 1082, 1079, 1082, 1081, + 0, 0, 1079, 1082, 0, 1080, 0, 1080, 1082, 0, + + 0, 0, 1080, 0, 1081, 0, 1081, 1080, 0, 0, + 1083, 1081, 1083, 1082, 0, 1082, 1081, 1083, 0, 1084, + 1082, 1084, 1083, 0, 0, 1082, 1084, 1084, 1085, 1085, + 1085, 1084, 0, 0, 0, 1085, 0, 1083, 0, 1083, + 1085, 0, 0, 0, 1083, 0, 1084, 0, 1084, 1083, + 1086, 0, 0, 1084, 1084, 1085, 1085, 1085, 1084, 1086, + 0, 1086, 1085, 1087, 0, 1087, 1086, 1085, 0, 0, + 1087, 1086, 1088, 0, 1088, 1087, 0, 1086, 0, 1088, + 1088, 0, 0, 0, 1088, 0, 1086, 0, 1086, 0, + 1087, 0, 1087, 1086, 0, 0, 0, 1087, 1086, 1088, + + 0, 1088, 1087, 1089, 1090, 1089, 1088, 1088, 0, 0, + 1089, 1088, 0, 0, 1090, 1089, 1090, 1091, 0, 1091, + 0, 1090, 0, 0, 1091, 0, 1090, 0, 0, 1091, + 1089, 1090, 1089, 0, 0, 0, 1092, 1089, 0, 0, + 0, 1090, 1089, 1090, 1091, 1092, 1091, 1092, 1090, 0, + 0, 1091, 1092, 1090, 0, 0, 1091, 1092, 1093, 1094, + 1093, 1094, 0, 1092, 0, 1093, 1094, 0, 0, 0, + 1093, 1094, 1092, 0, 1092, 0, 0, 0, 0, 1092, + 0, 0, 0, 0, 1092, 1093, 1094, 1093, 1094, 1095, + 0, 1095, 1093, 1094, 0, 1097, 1095, 1093, 1094, 1097, + + 1096, 1095, 1096, 0, 1098, 1097, 0, 1096, 1098, 0, + 0, 0, 1096, 0, 1098, 1097, 1095, 0, 1095, 0, + 0, 0, 1097, 1095, 1098, 0, 1097, 1096, 1095, 1096, + 0, 1098, 1097, 0, 1096, 1098, 1099, 0, 1099, 1096, + 1101, 1098, 1097, 1099, 1101, 1100, 0, 1100, 1099, 0, + 1101, 1098, 1100, 1100, 1102, 0, 1102, 1100, 0, 0, + 1101, 1102, 0, 1099, 0, 1099, 1102, 1101, 0, 0, + 1099, 1101, 1100, 0, 1100, 1099, 0, 1101, 0, 1100, + 1100, 1102, 0, 1102, 1100, 0, 0, 1101, 1102, 1103, + 1104, 1103, 1104, 1102, 0, 0, 1103, 1104, 1105, 0, + + 1105, 1103, 1104, 0, 0, 1105, 0, 0, 0, 0, + 1105, 0, 0, 0, 0, 0, 1103, 1104, 1103, 1104, + 0, 0, 0, 1103, 1104, 1105, 0, 1105, 1103, 1104, + 0, 1106, 1105, 1106, 1107, 0, 1107, 1105, 1106, 0, + 1108, 1107, 1108, 1106, 0, 0, 1107, 1108, 0, 0, + 0, 0, 1108, 0, 0, 0, 0, 0, 1106, 0, + 1106, 1107, 0, 1107, 0, 1106, 0, 1108, 1107, 1108, + 1106, 0, 0, 1107, 1108, 1109, 1110, 1109, 0, 1108, + 1110, 1109, 1109, 0, 0, 0, 1110, 1109, 0, 0, + 1112, 1111, 0, 0, 1112, 1111, 1110, 0, 0, 1111, + + 1112, 0, 1109, 1110, 1109, 1111, 0, 1110, 1109, 1109, + 1112, 0, 0, 1110, 1109, 1111, 0, 1112, 1111, 0, + 1113, 1112, 1111, 1110, 1113, 0, 1111, 1112, 0, 1114, + 1113, 1114, 1111, 0, 0, 0, 1114, 1112, 0, 0, + 1113, 1114, 1111, 1115, 0, 1115, 0, 1113, 0, 0, + 1115, 1113, 1116, 0, 1116, 1115, 1114, 1113, 1114, 1116, + 0, 0, 0, 1114, 1116, 0, 0, 1113, 1114, 0, + 1115, 1117, 1115, 1117, 1118, 0, 0, 1115, 1117, 1116, + 0, 1116, 1115, 1117, 0, 1118, 1116, 1118, 0, 0, + 0, 1116, 1118, 0, 0, 0, 0, 1118, 1117, 0, + + 1117, 1118, 0, 0, 1119, 1117, 1119, 0, 0, 0, + 1117, 1119, 1118, 1120, 1118, 1120, 1119, 0, 0, 1118, + 1120, 1120, 0, 0, 1118, 1120, 1121, 0, 0, 0, + 1121, 1119, 0, 1119, 0, 1122, 1121, 0, 1119, 1122, + 1120, 0, 1120, 1119, 0, 1122, 1121, 1120, 1120, 1125, + 1123, 1125, 1120, 1121, 1123, 1122, 1125, 1121, 0, 0, + 1123, 1125, 1122, 1121, 1124, 0, 1122, 0, 1124, 0, + 1123, 0, 1122, 1121, 1124, 0, 1125, 1123, 1125, 0, + 0, 1123, 1122, 1125, 1124, 0, 0, 1123, 1125, 1127, + 0, 1124, 1126, 0, 1126, 1124, 0, 1123, 1127, 1126, + + 1127, 1124, 0, 0, 1126, 1127, 0, 0, 0, 0, + 1127, 1124, 0, 1128, 0, 0, 1127, 0, 0, 1126, + 0, 1126, 1128, 0, 1128, 1127, 1126, 1127, 0, 1128, + 0, 1126, 1127, 0, 1128, 0, 1129, 1127, 1129, 0, + 1128, 0, 0, 1129, 0, 1130, 0, 1130, 1129, 1128, + 0, 1128, 1130, 0, 0, 0, 1128, 1130, 0, 0, + 0, 1128, 0, 1129, 1131, 1129, 1131, 0, 0, 0, + 1129, 1131, 1130, 0, 1130, 1129, 1131, 0, 1132, 1130, + 1132, 0, 0, 0, 1130, 1132, 0, 1133, 0, 1133, + 1132, 1131, 0, 1131, 1133, 0, 0, 0, 1131, 1133, + + 0, 0, 0, 1131, 0, 1132, 1134, 1132, 1134, 0, + 0, 0, 1132, 1134, 1133, 0, 1133, 1132, 1134, 0, + 1135, 1133, 1135, 1136, 0, 0, 1133, 1135, 0, 0, + 0, 0, 1135, 1134, 1136, 1134, 1136, 0, 0, 0, + 1134, 1136, 1137, 0, 0, 1134, 1136, 1135, 0, 1135, + 1136, 0, 0, 1137, 1135, 1137, 0, 0, 0, 1135, + 1137, 1136, 0, 1136, 0, 1137, 0, 1138, 1136, 1137, + 0, 0, 0, 1136, 0, 0, 1138, 1139, 1138, 1139, + 1137, 0, 1137, 1138, 1139, 1139, 0, 1137, 1138, 1139, + 0, 0, 1137, 0, 1138, 0, 0, 0, 0, 1140, + + 0, 0, 0, 1138, 1139, 1138, 1139, 1140, 0, 1140, + 1138, 1139, 1139, 0, 1140, 1138, 1139, 0, 1141, 1140, + 1141, 1142, 0, 1142, 0, 1141, 1140, 0, 1142, 0, + 1141, 0, 0, 1142, 1140, 0, 1140, 1143, 0, 1143, + 0, 1140, 0, 0, 1143, 1141, 1140, 1141, 1142, 1143, + 1142, 1144, 1141, 1144, 0, 1142, 0, 1141, 1144, 0, + 1142, 0, 0, 1144, 1143, 0, 1143, 1145, 0, 1145, + 1146, 1143, 1146, 1145, 1145, 0, 1143, 1146, 1144, 1145, + 1144, 1194, 1146, 1194, 0, 1144, 0, 0, 1194, 0, + 1144, 0, 0, 1194, 1145, 0, 1145, 1146, 0, 1146, + + 1145, 1145, 0, 0, 1146, 1195, 1145, 1195, 1194, 1146, + 1194, 1196, 1195, 1196, 1197, 1194, 1197, 1195, 1196, 0, + 1194, 1197, 0, 1196, 0, 0, 1197, 1198, 0, 0, + 0, 1198, 1195, 0, 1195, 0, 0, 1198, 1196, 1195, + 1196, 1197, 1199, 1197, 1195, 1196, 1199, 1198, 1197, 0, + 1196, 1200, 1199, 1197, 1198, 1200, 1201, 1201, 1198, 0, + 0, 1200, 1199, 0, 1198, 0, 1202, 0, 0, 1199, + 1202, 1200, 0, 1199, 1198, 0, 1202, 0, 1200, 1199, + 0, 1201, 1200, 0, 0, 1201, 1202, 0, 1200, 1199, + 0, 1201, 1203, 1202, 0, 1204, 1203, 1202, 1200, 1204, + + 1203, 1201, 0, 1202, 0, 1204, 1203, 0, 1201, 0, + 1205, 0, 1201, 1202, 1205, 1204, 1203, 0, 1201, 1203, + 1205, 0, 1204, 1203, 0, 1206, 1204, 1203, 1201, 1206, + 1205, 0, 1204, 1203, 1207, 1206, 0, 1205, 1207, 0, + 0, 1205, 1204, 1203, 1207, 1206, 1212, 1205, 1212, 1207, + 0, 0, 1206, 1212, 1207, 0, 1206, 1205, 1212, 1209, + 0, 1207, 1206, 1209, 1208, 1207, 1208, 0, 1208, 1209, + 0, 1207, 1206, 1212, 1208, 1212, 1207, 0, 1210, 1209, + 1212, 1207, 1210, 0, 1208, 1212, 1209, 1213, 1210, 1213, + 1209, 1208, 0, 1208, 1213, 1208, 1209, 0, 1210, 1213, + + 1211, 1208, 0, 0, 1211, 1210, 1209, 0, 0, 1210, + 1211, 1208, 0, 0, 1213, 1210, 1213, 1214, 0, 1214, + 1211, 1213, 0, 0, 1214, 1210, 1213, 1211, 1216, 1214, + 1216, 1211, 1215, 0, 0, 1216, 0, 1211, 0, 0, + 1216, 1215, 0, 1215, 1214, 0, 1214, 1211, 1215, 0, + 0, 1214, 0, 1215, 0, 1216, 1214, 1216, 0, 1215, + 0, 0, 1216, 0, 1217, 0, 1217, 1216, 1215, 0, + 1215, 1217, 1218, 0, 1218, 1215, 1217, 1220, 0, 1218, + 1215, 1220, 1221, 1219, 1218, 1219, 1221, 1220, 0, 1219, + 1219, 1217, 1221, 1217, 0, 1219, 0, 1220, 1217, 1218, + + 0, 1218, 1221, 1217, 1220, 0, 1218, 0, 1220, 1221, + 1219, 1218, 1219, 1221, 1220, 0, 1219, 1219, 1222, 1221, + 1222, 1223, 1219, 1223, 1220, 1222, 0, 0, 1223, 1221, + 1222, 0, 1224, 1223, 1224, 0, 0, 0, 0, 1224, + 0, 0, 1225, 0, 1224, 1222, 0, 1222, 1223, 0, + 1223, 1225, 1222, 1225, 0, 1223, 0, 1222, 1225, 1224, + 1223, 1224, 0, 1225, 0, 1226, 1224, 1226, 0, 1225, + 0, 1224, 1226, 1226, 0, 0, 0, 1226, 1225, 0, + 1225, 0, 0, 1227, 1227, 1225, 1227, 0, 0, 0, + 1225, 1227, 1226, 0, 1226, 1228, 1227, 1228, 0, 1226, + + 1226, 0, 1228, 0, 1226, 0, 0, 1228, 0, 0, + 1227, 1227, 0, 1227, 1229, 0, 1229, 0, 1227, 0, + 0, 1229, 1228, 1227, 1228, 1230, 1229, 1230, 1231, 1228, + 1231, 0, 1230, 1230, 1228, 1231, 0, 1230, 0, 0, + 1231, 1229, 0, 1229, 1232, 0, 1232, 0, 1229, 0, + 1232, 1232, 1230, 1229, 1230, 1231, 1232, 1231, 0, 1230, + 1230, 0, 1231, 0, 1230, 0, 0, 1231, 1233, 1233, + 1233, 1232, 0, 1232, 1234, 1233, 1234, 1232, 1232, 0, + 1233, 1234, 1234, 1232, 1235, 0, 1234, 0, 1235, 0, + 0, 0, 0, 0, 1235, 1233, 1233, 1233, 0, 0, + + 0, 1234, 1233, 1234, 1235, 0, 1236, 1233, 1234, 1234, + 1236, 1235, 0, 1234, 1237, 1235, 1236, 0, 1237, 1238, + 0, 1235, 0, 1238, 1237, 0, 1236, 0, 0, 1238, + 0, 1235, 1266, 1236, 1237, 0, 1266, 1236, 0, 1238, + 0, 1237, 1266, 1236, 1264, 1237, 1238, 0, 1264, 0, + 1238, 1237, 1266, 1236, 1264, 0, 1238, 1264, 1267, 1266, + 0, 1237, 1267, 1266, 1264, 0, 1238, 0, 1267, 1266, + 1268, 1264, 1269, 1267, 1268, 1264, 1269, 0, 1267, 1266, + 1268, 1264, 1269, 0, 1264, 1267, 0, 0, 0, 1267, + 1268, 1264, 1269, 0, 1270, 1267, 0, 1268, 1270, 1269, + + 1267, 1268, 0, 1269, 1270, 1267, 1271, 1268, 1271, 1269, + 1271, 0, 0, 0, 1270, 0, 1271, 1268, 0, 1269, + 0, 1270, 0, 0, 1272, 1270, 1271, 0, 1272, 0, + 0, 1270, 1273, 1271, 1272, 1271, 1273, 1271, 0, 1272, + 0, 1270, 1273, 1271, 1272, 0, 0, 0, 0, 0, + 1274, 1272, 1273, 1271, 1274, 1272, 0, 0, 0, 1273, + 1274, 1272, 0, 1273, 0, 0, 1272, 0, 0, 1273, + 1274, 1272, 1275, 0, 0, 0, 1275, 1274, 0, 1273, + 0, 1274, 1275, 1277, 1276, 1275, 1276, 1274, 1277, 0, + 1277, 1276, 1275, 0, 1278, 1277, 1276, 1274, 1278, 1275, + + 1277, 0, 0, 1275, 1278, 0, 0, 0, 0, 1275, + 1277, 1276, 1275, 1276, 1278, 1277, 1279, 1277, 1276, 1275, + 1279, 1278, 1277, 1276, 1280, 1278, 1279, 1277, 1280, 1281, + 0, 1278, 0, 1281, 1280, 0, 1279, 0, 1282, 1281, + 0, 1278, 1282, 1279, 1280, 0, 0, 1279, 1282, 1281, + 0, 1280, 0, 1279, 0, 1280, 1281, 0, 1282, 0, + 1281, 1280, 0, 1279, 0, 1282, 1281, 0, 1283, 1282, + 1284, 1280, 1283, 1285, 1284, 1282, 1281, 1285, 1283, 1283, + 1284, 1286, 1286, 1285, 0, 1282, 1286, 0, 1283, 0, + 1284, 0, 1286, 1285, 0, 1283, 0, 1284, 0, 1283, + + 1285, 1284, 1286, 0, 1285, 1283, 1283, 1284, 1286, 1286, + 1285, 1302, 1302, 1286, 1304, 1283, 0, 1284, 1304, 1286, + 1285, 0, 1305, 1306, 1304, 0, 1305, 1306, 0, 1286, + 0, 0, 1305, 1306, 1304, 0, 1302, 0, 0, 0, + 1302, 1304, 1305, 1306, 0, 1304, 1302, 0, 0, 1305, + 1306, 1304, 0, 1305, 1306, 0, 1302, 0, 0, 1305, + 1306, 1304, 0, 1302, 1307, 0, 1307, 1302, 0, 1305, + 1306, 1307, 1308, 1302, 1308, 1309, 1307, 1309, 1310, 1308, + 1310, 0, 1309, 1302, 1308, 1310, 0, 1309, 0, 0, + 1310, 1307, 0, 1307, 0, 0, 0, 0, 1307, 1308, + + 0, 1308, 1309, 1307, 1309, 1310, 1308, 1310, 1311, 1309, + 1311, 1308, 1310, 0, 1309, 1311, 1312, 1310, 1312, 0, + 1311, 1313, 0, 1312, 0, 1313, 1314, 0, 1312, 1325, + 1314, 1313, 0, 1325, 1326, 1311, 1314, 1311, 1326, 1325, + 0, 1313, 1311, 1312, 1326, 1312, 1314, 1311, 1313, 1325, + 1312, 0, 1313, 1314, 1326, 1312, 1325, 1314, 1313, 0, + 1325, 1326, 0, 1314, 0, 1326, 1325, 0, 1313, 0, + 1327, 1326, 0, 1314, 1327, 1328, 1325, 1328, 0, 0, + 1327, 1326, 1328, 0, 1336, 0, 1336, 1328, 0, 0, + 1327, 1336, 0, 0, 0, 0, 1336, 1327, 0, 0, + + 0, 1327, 1328, 0, 1328, 0, 0, 1327, 0, 1328, + 0, 1336, 0, 1336, 1328, 0, 0, 1327, 1336, 0, + 0, 0, 0, 1336, 1368, 1368, 1368, 1368, 1368, 1369, + 0, 0, 1369, 1369, 1371, 1371, 1371, 0, 1371, 1372, + 0, 1372, 1372, 1372, 1373, 0, 1373, 1373, 1373, 1374, + 0, 1374, 1374, 1374, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1367 } ; /* The intent behind this definition is that it'll catch @@ -3148,7 +3114,7 @@ static const flex_int16_t yy_chk[9157] = static thread_local std::stringstream strbuf; -#line 3151 "flex_lexer.cpp" +#line 3117 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -3162,7 +3128,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 3165 "flex_lexer.cpp" +#line 3131 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -3449,7 +3415,7 @@ YY_DECL #line 57 "flex_lexer.l" -#line 3452 "flex_lexer.cpp" +#line 3418 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3476,13 +3442,13 @@ YY_DECL 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 >= 1390 ) + if ( yy_current_state >= 1368 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1389 ); + while ( yy_current_state != 1367 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -3702,711 +3668,701 @@ TOKEN(DELETE) case 40: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(DELIMITER) +TOKEN(DELTA) YY_BREAK case 41: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(DESC) YY_BREAK case 42: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(DESC) +TOKEN(DESCRIBE) YY_BREAK case 43: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(DESCRIBE) +TOKEN(DIRECT) YY_BREAK case 44: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(DIRECT) +TOKEN(DISTINCT) YY_BREAK case 45: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(DISTINCT) +TOKEN(DOUBLE) YY_BREAK case 46: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(DOUBLE) +TOKEN(DROP) YY_BREAK case 47: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(DROP) +TOKEN(ELSE) YY_BREAK case 48: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(ENCODING) YY_BREAK case 49: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(ENCODING) +TOKEN(END) YY_BREAK case 50: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(END) +TOKEN(ESCAPE) YY_BREAK case 51: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(ESCAPE) +TOKEN(EXCEPT) YY_BREAK case 52: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(EXCEPT) +TOKEN(EXECUTE) YY_BREAK case 53: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(EXECUTE) +TOKEN(EXISTS) YY_BREAK case 54: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(EXISTS) +TOKEN(EXPLAIN) YY_BREAK case 55: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(EXPLAIN) +TOKEN(EXTRACT) YY_BREAK case 56: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(EXTRACT) +TOKEN(FALSE) YY_BREAK case 57: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(FALSE) +TOKEN(FILE) YY_BREAK case 58: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(FILE) +TOKEN(FLOAT) YY_BREAK case 59: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(FLOAT) +TOKEN(FOLLOWING) YY_BREAK case 60: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(FOLLOWING) +TOKEN(FOR) YY_BREAK case 61: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(FOR) +TOKEN(FOREIGN) YY_BREAK case 62: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(FOREIGN) +TOKEN(FORMAT) YY_BREAK case 63: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(FORMAT) +TOKEN(FROM) YY_BREAK case 64: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(FROM) +TOKEN(FULL) YY_BREAK case 65: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(FULL) +TOKEN(GLOBAL) YY_BREAK case 66: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(GROUP) YY_BREAK case 67: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(GROUPS) YY_BREAK case 68: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(GROUPS) +TOKEN(HASH) YY_BREAK case 69: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(HASH) +TOKEN(HAVING) YY_BREAK case 70: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(HINT) YY_BREAK case 71: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(HINT) +TOKEN(HOUR) YY_BREAK case 72: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(HOUR) +TOKEN(HOURS) YY_BREAK case 73: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(HOURS) +TOKEN(IF) YY_BREAK case 74: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(IF) +TOKEN(ILIKE) YY_BREAK case 75: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(IMPORT) YY_BREAK case 76: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(IN) YY_BREAK case 77: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(IN) +TOKEN(INDEX) YY_BREAK case 78: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(INNER) YY_BREAK case 79: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INSERT) YY_BREAK case 80: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(INT) YY_BREAK case 81: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(INT) +TOKEN(INTEGER) YY_BREAK case 82: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(INTEGER) +TOKEN(INTERSECT) YY_BREAK case 83: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(INTERSECT) +TOKEN(INTERVAL) YY_BREAK case 84: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(INTERVAL) +TOKEN(INTO) YY_BREAK case 85: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(INTO) +TOKEN(IS) YY_BREAK case 86: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(IS) +TOKEN(ISNULL) YY_BREAK case 87: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(JOIN) YY_BREAK case 88: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(KEY) YY_BREAK case 89: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(KEY) +TOKEN(LEFT) YY_BREAK case 90: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(LIKE) YY_BREAK case 91: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(LIMIT) YY_BREAK case 92: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(LOAD) YY_BREAK case 93: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LOCAL) YY_BREAK case 94: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LOCKED) YY_BREAK case 95: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(LOCKED) +TOKEN(LONG) YY_BREAK case 96: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(LONG) +TOKEN(MERGE) YY_BREAK case 97: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(MINUS) YY_BREAK case 98: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MINUTE) YY_BREAK case 99: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(MINUTE) +TOKEN(MINUTES) YY_BREAK case 100: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(MINUTES) +TOKEN(MONTH) YY_BREAK case 101: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(MONTH) +TOKEN(MONTHS) YY_BREAK case 102: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(MONTHS) +TOKEN(NATURAL) YY_BREAK case 103: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NATURAL) +TOKEN(NO) YY_BREAK case 104: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(NO) +TOKEN(NOT) YY_BREAK case 105: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(NOT) +TOKEN(NOWAIT) YY_BREAK case 106: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(NOWAIT) +TOKEN(NULL) YY_BREAK case 107: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(NULL) +TOKEN(NVARCHAR) YY_BREAK case 108: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(NVARCHAR) +TOKEN(OF) YY_BREAK case 109: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(OF) +TOKEN(OFF) YY_BREAK case 110: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(OFF) +TOKEN(OFFSET) YY_BREAK case 111: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(ON) YY_BREAK case 112: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(ON) +TOKEN(OR) YY_BREAK case 113: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(OR) +TOKEN(ORDER) YY_BREAK case 114: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(OUTER) YY_BREAK case 115: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(OVER) YY_BREAK case 116: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(OVER) +TOKEN(PARAMETERS) YY_BREAK case 117: YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(PARAMETERS) +TOKEN(PARTITION) YY_BREAK case 118: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(PARTITION) +TOKEN(PLAN) YY_BREAK case 119: YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(PRECEDING) YY_BREAK case 120: YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(PRECEDING) +TOKEN(PREPARE) YY_BREAK case 121: YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(PREPARE) +TOKEN(PRIMARY) YY_BREAK case 122: YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(PRIMARY) +TOKEN(RANGE) YY_BREAK case 123: YY_RULE_SETUP #line 183 "flex_lexer.l" -TOKEN(QUOTE) +TOKEN(REAL) YY_BREAK case 124: YY_RULE_SETUP #line 184 "flex_lexer.l" -TOKEN(RANGE) +TOKEN(REFERENCES) YY_BREAK case 125: YY_RULE_SETUP #line 185 "flex_lexer.l" -TOKEN(REAL) +TOKEN(RENAME) YY_BREAK case 126: YY_RULE_SETUP #line 186 "flex_lexer.l" -TOKEN(REFERENCES) +TOKEN(RESTRICT) YY_BREAK case 127: YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(RIGHT) YY_BREAK case 128: YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(RESTRICT) +TOKEN(ROLLBACK) YY_BREAK case 129: YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(ROWS) YY_BREAK case 130: YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(ROLLBACK) +TOKEN(SCHEMA) YY_BREAK case 131: YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(ROWS) +TOKEN(SCHEMAS) YY_BREAK case 132: YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(SECOND) YY_BREAK case 133: YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(SCHEMAS) +TOKEN(SECONDS) YY_BREAK case 134: YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(SECOND) +TOKEN(SELECT) YY_BREAK case 135: YY_RULE_SETUP #line 195 "flex_lexer.l" -TOKEN(SECONDS) +TOKEN(SET) YY_BREAK case 136: YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(SHARE) YY_BREAK case 137: YY_RULE_SETUP #line 197 "flex_lexer.l" -TOKEN(SET) +TOKEN(SHOW) YY_BREAK case 138: YY_RULE_SETUP #line 198 "flex_lexer.l" -TOKEN(SHARE) +TOKEN(SKIP) YY_BREAK case 139: YY_RULE_SETUP #line 199 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(SMALLINT) YY_BREAK case 140: YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(SKIP) +TOKEN(SORTED) YY_BREAK case 141: YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(SMALLINT) +TOKEN(SPATIAL) YY_BREAK case 142: YY_RULE_SETUP #line 202 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(TABLE) YY_BREAK case 143: YY_RULE_SETUP #line 203 "flex_lexer.l" -TOKEN(SPATIAL) +TOKEN(TABLES) YY_BREAK case 144: YY_RULE_SETUP #line 204 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(TEMPORARY) YY_BREAK case 145: YY_RULE_SETUP #line 205 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(TEXT) YY_BREAK case 146: YY_RULE_SETUP #line 206 "flex_lexer.l" -TOKEN(TEMPORARY) +TOKEN(THEN) YY_BREAK case 147: YY_RULE_SETUP #line 207 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(TIME) YY_BREAK case 148: YY_RULE_SETUP #line 208 "flex_lexer.l" -TOKEN(THEN) +TOKEN(TIMESTAMP) YY_BREAK case 149: YY_RULE_SETUP #line 209 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TO) YY_BREAK case 150: YY_RULE_SETUP #line 210 "flex_lexer.l" -TOKEN(TIMESTAMP) +TOKEN(TOP) YY_BREAK case 151: YY_RULE_SETUP #line 211 "flex_lexer.l" -TOKEN(TO) +TOKEN(TRANSACTION) YY_BREAK case 152: YY_RULE_SETUP #line 212 "flex_lexer.l" -TOKEN(TOP) +TOKEN(TRUE) YY_BREAK case 153: YY_RULE_SETUP #line 213 "flex_lexer.l" -TOKEN(TRANSACTION) +TOKEN(TRUNCATE) YY_BREAK case 154: YY_RULE_SETUP #line 214 "flex_lexer.l" -TOKEN(TRUE) +TOKEN(UNBOUNDED) YY_BREAK case 155: YY_RULE_SETUP #line 215 "flex_lexer.l" -TOKEN(TRUNCATE) +TOKEN(UNION) YY_BREAK case 156: YY_RULE_SETUP #line 216 "flex_lexer.l" -TOKEN(UNBOUNDED) +TOKEN(UNIQUE) YY_BREAK case 157: YY_RULE_SETUP #line 217 "flex_lexer.l" -TOKEN(UNION) +TOKEN(UNLOAD) YY_BREAK case 158: YY_RULE_SETUP #line 218 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(UPDATE) YY_BREAK case 159: YY_RULE_SETUP #line 219 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(USING) YY_BREAK case 160: YY_RULE_SETUP #line 220 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(VALUES) YY_BREAK case 161: YY_RULE_SETUP #line 221 "flex_lexer.l" -TOKEN(USING) +TOKEN(VARCHAR) YY_BREAK case 162: YY_RULE_SETUP #line 222 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(VIEW) YY_BREAK case 163: YY_RULE_SETUP #line 223 "flex_lexer.l" -TOKEN(VARCHAR) +TOKEN(VIRTUAL) YY_BREAK case 164: YY_RULE_SETUP #line 224 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(WHEN) YY_BREAK case 165: YY_RULE_SETUP #line 225 "flex_lexer.l" -TOKEN(VIRTUAL) +TOKEN(WHERE) YY_BREAK case 166: YY_RULE_SETUP #line 226 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(WITH) YY_BREAK case 167: YY_RULE_SETUP #line 227 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(YEAR) YY_BREAK case 168: YY_RULE_SETUP #line 228 "flex_lexer.l" -TOKEN(WITH) +TOKEN(YEARS) YY_BREAK case 169: +/* rule 169 can match eol */ YY_RULE_SETUP -#line 229 "flex_lexer.l" -TOKEN(YEAR) +#line 230 "flex_lexer.l" +TOKEN(CURRENT_ROW) YY_BREAK case 170: +/* rule 170 can match eol */ YY_RULE_SETUP -#line 230 "flex_lexer.l" -TOKEN(YEARS) +#line 231 "flex_lexer.l" +TOKEN(CHARACTER_VARYING) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 171: -/* rule 171 can match eol */ YY_RULE_SETUP -#line 232 "flex_lexer.l" -TOKEN(CURRENT_ROW) +#line 234 "flex_lexer.l" +TOKEN(EQUALS) YY_BREAK case 172: -/* rule 172 can match eol */ YY_RULE_SETUP -#line 233 "flex_lexer.l" -TOKEN(CHARACTER_VARYING) +#line 235 "flex_lexer.l" +TOKEN(NOTEQUALS) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 173: YY_RULE_SETUP #line 236 "flex_lexer.l" -TOKEN(EQUALS) +TOKEN(NOTEQUALS) YY_BREAK case 174: YY_RULE_SETUP #line 237 "flex_lexer.l" -TOKEN(NOTEQUALS) +TOKEN(LESSEQ) YY_BREAK case 175: YY_RULE_SETUP #line 238 "flex_lexer.l" -TOKEN(NOTEQUALS) +TOKEN(GREATEREQ) YY_BREAK case 176: YY_RULE_SETUP #line 239 "flex_lexer.l" -TOKEN(LESSEQ) +TOKEN(CONCAT) YY_BREAK case 177: YY_RULE_SETUP -#line 240 "flex_lexer.l" -TOKEN(GREATEREQ) - YY_BREAK -case 178: -YY_RULE_SETUP #line 241 "flex_lexer.l" -TOKEN(CONCAT) - YY_BREAK -case 179: -YY_RULE_SETUP -#line 243 "flex_lexer.l" { return yytext[0]; } YY_BREAK -case 180: -#line 246 "flex_lexer.l" -case 181: +case 178: +#line 244 "flex_lexer.l" +case 179: YY_RULE_SETUP -#line 246 "flex_lexer.l" +#line 244 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; @@ -4417,17 +4373,17 @@ YY_RULE_SETUP * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where * numeric_limits::lowest() == -numeric_limits::max(); */ -case 182: +case 180: YY_RULE_SETUP -#line 256 "flex_lexer.l" +#line 254 "flex_lexer.l" { yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK -case 183: +case 181: YY_RULE_SETUP -#line 261 "flex_lexer.l" +#line 259 "flex_lexer.l" { errno = 0; yylval->ival = strtoll(yytext, nullptr, 0); @@ -4438,59 +4394,59 @@ YY_RULE_SETUP return SQL_INTVAL; } YY_BREAK -case 184: +case 182: YY_RULE_SETUP -#line 271 "flex_lexer.l" +#line 269 "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 185: +case 183: YY_RULE_SETUP -#line 277 "flex_lexer.l" +#line 275 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 186: +case 184: YY_RULE_SETUP -#line 282 "flex_lexer.l" +#line 280 "flex_lexer.l" { BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 YY_BREAK -case 187: +case 185: YY_RULE_SETUP -#line 283 "flex_lexer.l" +#line 281 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 188: -/* rule 188 can match eol */ +case 186: +/* rule 186 can match eol */ YY_RULE_SETUP -#line 284 "flex_lexer.l" +#line 282 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 189: +case 187: YY_RULE_SETUP -#line 285 "flex_lexer.l" +#line 283 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 286 "flex_lexer.l" +#line 284 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 190: +case 188: YY_RULE_SETUP -#line 288 "flex_lexer.l" +#line 286 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 191: +case 189: YY_RULE_SETUP -#line 290 "flex_lexer.l" +#line 288 "flex_lexer.l" ECHO; YY_BREAK -#line 4493 "flex_lexer.cpp" +#line 4449 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -4791,7 +4747,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 >= 1390 ) + if ( yy_current_state >= 1368 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4820,11 +4776,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 >= 1390 ) + if ( yy_current_state >= 1368 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1389); + yy_is_jam = (yy_current_state == 1367); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -5647,7 +5603,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 290 "flex_lexer.l" +#line 288 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index ce50204b..40aa36a4 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -730,7 +730,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 290 "flex_lexer.l" +#line 288 "flex_lexer.l" #line 736 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index de61ee7b..f4cd348c 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -97,7 +97,6 @@ DEALLOCATE TOKEN(DEALLOCATE) DECIMAL TOKEN(DECIMAL) DEFAULT TOKEN(DEFAULT) DELETE TOKEN(DELETE) -DELIMITER TOKEN(DELIMITER) DELTA TOKEN(DELTA) DESC TOKEN(DESC) DESCRIBE TOKEN(DESCRIBE) @@ -180,7 +179,6 @@ PLAN TOKEN(PLAN) PRECEDING TOKEN(PRECEDING) PREPARE TOKEN(PREPARE) PRIMARY TOKEN(PRIMARY) -QUOTE TOKEN(QUOTE) RANGE TOKEN(RANGE) REAL TOKEN(REAL) REFERENCES TOKEN(REFERENCES) diff --git a/src/sql/CsvImportExportOptions.h b/src/sql/CsvImportExportOptions.h new file mode 100644 index 00000000..2edaaa6d --- /dev/null +++ b/src/sql/CsvImportExportOptions.h @@ -0,0 +1,17 @@ +#ifndef SQLPARSER_CSV_IMPORT_EXPORT_OPTIONS_H +#define SQLPARSER_CSV_IMPORT_EXPORT_OPTIONS_H + +namespace hsql { + +struct CsvImportExportOptions { + CsvImportExportOptions(); + ~CsvImportExportOptions(); + + char* delimiter; + char* null; + char* quote; +}; + +} // namespace hsql + +#endif diff --git a/src/sql/ExportStatement.h b/src/sql/ExportStatement.h index 206b38fc..74245953 100755 --- a/src/sql/ExportStatement.h +++ b/src/sql/ExportStatement.h @@ -1,6 +1,7 @@ #ifndef SQLPARSER_EXPORT_STATEMENT_H #define SQLPARSER_EXPORT_STATEMENT_H +#include "CsvImportExportOptions.h" #include "ImportExportOptions.h" #include "SQLStatement.h" #include "SelectStatement.h" @@ -18,9 +19,7 @@ struct ExportStatement : SQLStatement { char* tableName; SelectStatement* select; char* encoding; - char* delimiter; - char* null; - char* quote; + CsvImportExportOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/ImportExportOptions.h b/src/sql/ImportExportOptions.h index b47c4578..c91a30c1 100644 --- a/src/sql/ImportExportOptions.h +++ b/src/sql/ImportExportOptions.h @@ -1,6 +1,8 @@ #ifndef SQLPARSER_IMPORT_EXPORT_OPTIONS_H #define SQLPARSER_IMPORT_EXPORT_OPTIONS_H +#include "CsvImportExportOptions.h" + namespace hsql { // Name unchanged for compatibility. Historically, this was only used for import statements before we introduced export @@ -19,9 +21,7 @@ struct ImportExportOptions { ImportType format; char* encoding; - char* delimiter; - char* null; - char* quote; + CsvImportExportOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/ImportStatement.h b/src/sql/ImportStatement.h index 04c2b6d0..d3e7c3a9 100644 --- a/src/sql/ImportStatement.h +++ b/src/sql/ImportStatement.h @@ -1,6 +1,7 @@ #ifndef SQLPARSER_IMPORT_STATEMENT_H #define SQLPARSER_IMPORT_STATEMENT_H +#include "CsvImportExportOptions.h" #include "ImportExportOptions.h" #include "SQLStatement.h" @@ -17,9 +18,7 @@ struct ImportStatement : SQLStatement { char* tableName; Expr* whereClause; char* encoding; - char* delimiter; - char* null; - char* quote; + CsvImportExportOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index e9a3ceb7..f5e4af30 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -141,9 +141,7 @@ ExportStatement::ExportStatement(ImportType type) tableName(nullptr), select(nullptr), encoding(nullptr), - delimiter(nullptr), - null(nullptr), - quote(nullptr) {} + csv_options(nullptr) {} ExportStatement::~ExportStatement() { free(filePath); @@ -151,19 +149,21 @@ ExportStatement::~ExportStatement() { free(tableName); delete select; free(encoding); + delete csv_options; +} + +CsvImportExportOptions::CsvImportExportOptions() : delimiter(nullptr), null(nullptr), quote(nullptr) {} +CsvImportExportOptions::~CsvImportExportOptions() { free(delimiter); free(null); free(quote); } -ImportExportOptions::ImportExportOptions() - : format(kImportAuto), encoding(nullptr), delimiter(nullptr), null(nullptr), quote(nullptr) {} +ImportExportOptions::ImportExportOptions() : format(kImportAuto), encoding(nullptr), csv_options(nullptr) {} ImportExportOptions::~ImportExportOptions() { free(encoding); - free(delimiter); - free(null); - free(quote); + delete csv_options; } // ImportStatement @@ -175,9 +175,7 @@ ImportStatement::ImportStatement(ImportType type) tableName(nullptr), whereClause(nullptr), encoding(nullptr), - delimiter(nullptr), - null(nullptr), - quote(nullptr) {} + csv_options(nullptr) {} ImportStatement::~ImportStatement() { free(filePath); @@ -185,9 +183,7 @@ ImportStatement::~ImportStatement() { free(tableName); delete whereClause; free(encoding); - free(delimiter); - free(null); - free(quote); + delete csv_options; } // InsertStatement diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 995b5ded..3dcb612a 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -53,6 +53,7 @@ !SELECT * FROM t WHERE a = DATE '2000-01-01' + x DAYS; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL 'x' DAY; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL '3.3 DAYS'; +!COPY students FROM 'file_path' WITH (FORMAT TBL, DELIMITER '|', NULL '', QUOTE '"'); # Cannot have CSV options with non-CSV format # ON is not supported by postgres. We follow postgres here since the sql-92 standard does not specify index # implementation details. !DROP INDEX myindex ON mytable; diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 0d219f34..58264ba2 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -476,12 +476,13 @@ TEST(CopyStatementTest) { ASSERT_STREQ(import_stmt->filePath, "students_file"); ASSERT_NULL(import_stmt->whereClause); ASSERT_NULL(import_stmt->encoding); - ASSERT_NOTNULL(import_stmt->delimiter); - ASSERT_STREQ(import_stmt->delimiter, "|"); - ASSERT_NOTNULL(import_stmt->null); - ASSERT_STREQ(import_stmt->null, ""); - ASSERT_NOTNULL(import_stmt->quote); - ASSERT_STREQ(import_stmt->quote, "\""); + ASSERT_NOTNULL(import_stmt->csv_options); + ASSERT_NOTNULL(import_stmt->csv_options->delimiter); + ASSERT_STREQ(import_stmt->csv_options->delimiter, "|"); + ASSERT_NOTNULL(import_stmt->csv_options->null); + ASSERT_STREQ(import_stmt->csv_options->null, ""); + ASSERT_NOTNULL(import_stmt->csv_options->quote); + ASSERT_STREQ(import_stmt->csv_options->quote, "\""); TEST_PARSE_SINGLE_SQL("COPY students FROM 'students_file' WHERE lastname = 'Potter';", kStmtImport, ImportStatement, import_filter_result, import_filter_stmt); @@ -498,6 +499,7 @@ TEST(CopyStatementTest) { ASSERT_EQ(import_filter_stmt->whereClause->expr2->type, kExprLiteralString); ASSERT_STREQ(import_filter_stmt->whereClause->expr2->name, "Potter"); ASSERT_NULL(import_filter_stmt->encoding); + ASSERT_NULL(import_filter_stmt->csv_options); TEST_PARSE_SINGLE_SQL("COPY students TO 'students_file' WITH (ENCODING 'FSST', FORMAT BINARY);", kStmtExport, ExportStatement, export_table_result, export_table_stmt); @@ -509,6 +511,7 @@ TEST(CopyStatementTest) { ASSERT_STREQ(export_table_stmt->filePath, "students_file"); ASSERT_NULL(export_table_stmt->select); ASSERT_STREQ(export_table_stmt->encoding, "FSST"); + ASSERT_NULL(export_table_stmt->csv_options); TEST_PARSE_SINGLE_SQL( "COPY (SELECT firstname, lastname FROM students) TO 'students_file' WITH (ENCODING 'Dictionary');", kStmtExport, @@ -519,6 +522,7 @@ TEST(CopyStatementTest) { ASSERT_NOTNULL(export_select_stmt->filePath); ASSERT_STREQ(export_select_stmt->filePath, "students_file"); ASSERT_STREQ(export_select_stmt->encoding, "Dictionary"); + ASSERT_NULL(export_select_stmt->csv_options); ASSERT_NOTNULL(export_select_stmt->select); const auto& select_stmt = export_select_stmt->select; From f7d7b9fe2e36cf6e90ce982eebfbd40064ce042e Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Tue, 5 Aug 2025 11:57:40 +0200 Subject: [PATCH 03/10] Use single CSV option, simplify parsing and add more test cases --- src/parser/bison_parser.cpp | 1249 +++++++++++++++--------------- src/parser/bison_parser.h | 2 +- src/parser/bison_parser.y | 105 +-- src/sql/CsvImportExportOptions.h | 17 - src/sql/ExportStatement.h | 3 +- src/sql/ImportExportOptions.h | 19 +- src/sql/ImportStatement.h | 3 +- src/sql/statements.cpp | 4 +- test/queries/queries-bad.sql | 6 +- test/queries/queries-good.sql | 1 + 10 files changed, 709 insertions(+), 700 deletions(-) delete mode 100644 src/sql/CsvImportExportOptions.h diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 6d62acfc..ea0fd748 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -350,7 +350,7 @@ enum yysymbol_kind_t YYSYMBOL_file_path = 214, /* file_path */ YYSYMBOL_opt_import_export_options = 215, /* opt_import_export_options */ YYSYMBOL_import_export_options = 216, /* import_export_options */ - YYSYMBOL_csv_import_export_options = 217, /* csv_import_export_options */ + YYSYMBOL_csv_option = 217, /* csv_option */ YYSYMBOL_export_statement = 218, /* export_statement */ YYSYMBOL_show_statement = 219, /* show_statement */ YYSYMBOL_create_statement = 220, /* create_statement */ @@ -877,38 +877,38 @@ static const yytype_int16 yyrline[] = 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 396, 397, 399, 403, 408, 412, 422, 423, 424, 426, 426, 432, 438, 440, 444, 456, 462, 479, 494, 496, - 497, 498, 500, 514, 518, 528, 532, 580, 585, 600, - 610, 625, 645, 646, 651, 662, 675, 687, 694, 701, - 710, 711, 713, 717, 722, 723, 725, 733, 734, 735, - 736, 737, 738, 739, 743, 744, 745, 746, 747, 748, - 749, 750, 751, 752, 753, 755, 756, 758, 759, 760, - 762, 763, 765, 769, 773, 778, 786, 787, 788, 789, - 791, 792, 793, 795, 803, 809, 815, 821, 827, 828, - 835, 841, 843, 853, 860, 871, 878, 886, 887, 894, - 901, 905, 910, 920, 924, 928, 940, 940, 942, 943, - 952, 953, 955, 969, 981, 986, 990, 994, 999, 1000, - 1002, 1012, 1013, 1015, 1017, 1018, 1020, 1022, 1023, 1025, - 1030, 1032, 1033, 1035, 1036, 1038, 1042, 1047, 1049, 1050, - 1051, 1055, 1056, 1058, 1059, 1060, 1061, 1062, 1063, 1068, - 1072, 1078, 1079, 1081, 1085, 1090, 1090, 1094, 1102, 1103, - 1105, 1114, 1114, 1114, 1114, 1114, 1116, 1117, 1117, 1117, - 1117, 1117, 1117, 1117, 1117, 1118, 1118, 1122, 1122, 1124, - 1125, 1126, 1127, 1128, 1130, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1141, 1142, 1144, 1145, 1146, - 1147, 1151, 1152, 1153, 1154, 1156, 1157, 1159, 1160, 1162, - 1163, 1164, 1165, 1166, 1167, 1168, 1172, 1173, 1177, 1178, - 1180, 1181, 1186, 1187, 1188, 1192, 1193, 1194, 1196, 1197, - 1198, 1199, 1200, 1202, 1204, 1206, 1207, 1208, 1209, 1210, - 1211, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1220, 1222, - 1224, 1226, 1228, 1229, 1230, 1231, 1233, 1233, 1233, 1233, - 1233, 1233, 1233, 1235, 1237, 1238, 1240, 1241, 1243, 1245, - 1247, 1258, 1259, 1270, 1302, 1311, 1311, 1318, 1318, 1320, - 1320, 1327, 1331, 1336, 1344, 1350, 1354, 1359, 1360, 1362, - 1362, 1364, 1364, 1366, 1367, 1369, 1369, 1375, 1376, 1378, - 1382, 1387, 1393, 1400, 1401, 1402, 1403, 1405, 1406, 1407, - 1413, 1413, 1415, 1417, 1421, 1426, 1436, 1443, 1451, 1460, - 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1471, - 1477, 1477, 1480, 1484 + 497, 498, 500, 514, 518, 528, 532, 574, 595, 608, + 615, 630, 650, 651, 656, 667, 680, 692, 699, 706, + 715, 716, 718, 722, 727, 728, 730, 738, 739, 740, + 741, 742, 743, 744, 748, 749, 750, 751, 752, 753, + 754, 755, 756, 757, 758, 760, 761, 763, 764, 765, + 767, 768, 770, 774, 778, 783, 791, 792, 793, 794, + 796, 797, 798, 800, 808, 814, 820, 826, 832, 833, + 840, 846, 848, 858, 865, 876, 883, 891, 892, 899, + 906, 910, 915, 925, 929, 933, 945, 945, 947, 948, + 957, 958, 960, 974, 986, 991, 995, 999, 1004, 1005, + 1007, 1017, 1018, 1020, 1022, 1023, 1025, 1027, 1028, 1030, + 1035, 1037, 1038, 1040, 1041, 1043, 1047, 1052, 1054, 1055, + 1056, 1060, 1061, 1063, 1064, 1065, 1066, 1067, 1068, 1073, + 1077, 1083, 1084, 1086, 1090, 1095, 1095, 1099, 1107, 1108, + 1110, 1119, 1119, 1119, 1119, 1119, 1121, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1123, 1123, 1127, 1127, 1129, + 1130, 1131, 1132, 1133, 1135, 1135, 1136, 1137, 1138, 1139, + 1140, 1141, 1142, 1143, 1144, 1146, 1147, 1149, 1150, 1151, + 1152, 1156, 1157, 1158, 1159, 1161, 1162, 1164, 1165, 1167, + 1168, 1169, 1170, 1171, 1172, 1173, 1177, 1178, 1182, 1183, + 1185, 1186, 1191, 1192, 1193, 1197, 1198, 1199, 1201, 1202, + 1203, 1204, 1205, 1207, 1209, 1211, 1212, 1213, 1214, 1215, + 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1225, 1225, 1227, + 1229, 1231, 1233, 1234, 1235, 1236, 1238, 1238, 1238, 1238, + 1238, 1238, 1238, 1240, 1242, 1243, 1245, 1246, 1248, 1250, + 1252, 1263, 1264, 1275, 1307, 1316, 1316, 1323, 1323, 1325, + 1325, 1332, 1336, 1341, 1349, 1355, 1359, 1364, 1365, 1367, + 1367, 1369, 1369, 1371, 1372, 1374, 1374, 1380, 1381, 1383, + 1387, 1392, 1398, 1405, 1406, 1407, 1408, 1410, 1411, 1412, + 1418, 1418, 1420, 1422, 1426, 1431, 1441, 1448, 1456, 1465, + 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1476, + 1482, 1482, 1485, 1489 }; #endif @@ -956,7 +956,7 @@ static const char *const yytname[] = "transaction_statement", "opt_transaction_keyword", "prepare_statement", "prepare_target_query", "execute_statement", "import_statement", "file_type", "file_path", "opt_import_export_options", - "import_export_options", "csv_import_export_options", "export_statement", + "import_export_options", "csv_option", "export_statement", "show_statement", "create_statement", "opt_not_exists", "table_elem_commalist", "table_elem", "column_def", "column_type", "opt_time_precision", "opt_decimal_specification", @@ -2222,9 +2222,9 @@ yydestruct (const char *yymsg, #line 2223 "bison_parser.cpp" break; - case YYSYMBOL_csv_import_export_options: /* csv_import_export_options */ + case YYSYMBOL_csv_option: /* csv_option */ #line 202 "bison_parser.y" - { delete (((*yyvaluep).csv_import_export_option_t)); } + { delete (((*yyvaluep).csv_option_t)); } #line 2229 "bison_parser.cpp" break; @@ -3641,7 +3641,7 @@ YYLTYPE yylloc = yyloc_default; } if ((yyvsp[-3].import_export_option_t)->csv_options && (yyvsp[0].import_type_t) != kImportCSV && (yyvsp[0].import_type_t) != kImportAuto) { delete (yyvsp[-3].import_export_option_t); - yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) are only allowed for CSV files."); YYERROR; } (yyvsp[-3].import_export_option_t)->format = (yyvsp[0].import_type_t); @@ -3683,99 +3683,104 @@ YYLTYPE yylloc = yyloc_default; #line 3684 "bison_parser.cpp" break; - case 46: /* import_export_options: import_export_options ',' csv_import_export_options */ + case 46: /* import_export_options: import_export_options ',' csv_option */ #line 532 "bison_parser.y" - { + { if ((yyvsp[-2].import_export_option_t)->format != kImportAuto && (yyvsp[-2].import_export_option_t)->format != kImportCSV) { delete (yyvsp[-2].import_export_option_t); - delete (yyvsp[0].csv_import_export_option_t); - yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) are only allowed for CSV files."); YYERROR; } - if ((yyvsp[-2].import_export_option_t)->csv_options) { - if ((yyvsp[-2].import_export_option_t)->csv_options->delimiter && (yyvsp[0].csv_import_export_option_t)->delimiter) { - delete (yyvsp[-2].import_export_option_t); - delete (yyvsp[0].csv_import_export_option_t); - yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); - YYERROR; - } - if ((yyvsp[-2].import_export_option_t)->csv_options->null && (yyvsp[0].csv_import_export_option_t)->null) { - delete (yyvsp[-2].import_export_option_t); - delete (yyvsp[0].csv_import_export_option_t); - yyerror(&yyloc, result, scanner, "Null string must only be provided once."); - YYERROR; - } - if ((yyvsp[-2].import_export_option_t)->csv_options->quote && (yyvsp[0].csv_import_export_option_t)->quote) { - delete (yyvsp[-2].import_export_option_t); - delete (yyvsp[0].csv_import_export_option_t); - yyerror(&yyloc, result, scanner, "Quote must only be provided once."); - YYERROR; - } + if ((yyvsp[-2].import_export_option_t)->csv_options == nullptr) { + (yyvsp[-2].import_export_option_t)->csv_options = new CsvOptions{}; + } - if ((yyvsp[0].csv_import_export_option_t)->delimiter) { - (yyvsp[-2].import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_import_export_option_t)->delimiter; - (yyvsp[0].csv_import_export_option_t)->delimiter = nullptr; - } - if ((yyvsp[0].csv_import_export_option_t)->null) { - (yyvsp[-2].import_export_option_t)->csv_options->null = (yyvsp[0].csv_import_export_option_t)->null; - (yyvsp[0].csv_import_export_option_t)->null = nullptr; +#define ASSERT_IS_NULLPTR(ptr) \ + if ((ptr) != nullptr) { \ + delete (yyvsp[-2].import_export_option_t); \ + free((yyvsp[0].csv_option_t)->second); \ + delete (yyvsp[0].csv_option_t); \ + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); \ + YYERROR; \ + } - } - if ((yyvsp[0].csv_import_export_option_t)->quote) { - (yyvsp[-2].import_export_option_t)->csv_options->quote = (yyvsp[0].csv_import_export_option_t)->quote; - (yyvsp[0].csv_import_export_option_t)->quote = nullptr; - } - delete (yyvsp[0].csv_import_export_option_t); + if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Delimiter) { + ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->delimiter); + (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; + } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Null) { + ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->null); + (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; + } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Quote) { + ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->quote); + (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; } else { - (yyvsp[-2].import_export_option_t)->csv_options = (yyvsp[0].csv_import_export_option_t); + delete (yyvsp[-2].import_export_option_t); + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } + delete (yyvsp[0].csv_option_t); (yyval.import_export_option_t) = (yyvsp[-2].import_export_option_t); } -#line 3737 "bison_parser.cpp" +#line 3731 "bison_parser.cpp" break; - case 47: /* import_export_options: csv_import_export_options */ -#line 580 "bison_parser.y" - { + case 47: /* import_export_options: csv_option */ +#line 574 "bison_parser.y" + { (yyval.import_export_option_t) = new ImportExportOptions{}; - (yyval.import_export_option_t)->csv_options = (yyvsp[0].csv_import_export_option_t); + (yyval.import_export_option_t)->csv_options = new CsvOptions{}; + + if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Delimiter) { + (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; + } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Null) { + (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; + } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Quote) { + (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; + } else { + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); + delete (yyval.import_export_option_t); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; + } + + delete (yyvsp[0].csv_option_t); } -#line 3746 "bison_parser.cpp" +#line 3756 "bison_parser.cpp" break; - case 48: /* csv_import_export_options: IDENTIFIER STRING */ -#line 585 "bison_parser.y" - { - (yyval.csv_import_export_option_t) = new CsvImportExportOptions{}; + case 48: /* csv_option: IDENTIFIER STRING */ +#line 595 "bison_parser.y" + { if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { - (yyval.csv_import_export_option_t)->delimiter = (yyvsp[0].sval); + (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Delimiter, (yyvsp[0].sval)); } else if (strcasecmp((yyvsp[-1].sval), "QUOTE") == 0) { - (yyval.csv_import_export_option_t)->quote = (yyvsp[0].sval); + (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Quote, (yyvsp[0].sval)); } else { - delete (yyval.csv_import_export_option_t); free((yyvsp[-1].sval)); free((yyvsp[0].sval)); - yyerror(&yyloc, result, scanner, "Unknown identifier when parsing CSV options."); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); YYERROR; } free((yyvsp[-1].sval)); } -#line 3766 "bison_parser.cpp" +#line 3774 "bison_parser.cpp" break; - case 49: /* csv_import_export_options: NULL STRING */ -#line 600 "bison_parser.y" - { - (yyval.csv_import_export_option_t) = new CsvImportExportOptions{}; - (yyval.csv_import_export_option_t)->null = (yyvsp[0].sval); -} -#line 3775 "bison_parser.cpp" + case 49: /* csv_option: NULL STRING */ +#line 608 "bison_parser.y" + { (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Null, (yyvsp[0].sval)); } +#line 3780 "bison_parser.cpp" break; case 50: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 610 "bison_parser.y" +#line 615 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3791,11 +3796,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3795 "bison_parser.cpp" +#line 3800 "bison_parser.cpp" break; case 51: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 625 "bison_parser.y" +#line 630 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3810,37 +3815,37 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3814 "bison_parser.cpp" +#line 3819 "bison_parser.cpp" break; case 52: /* show_statement: SHOW TABLES */ -#line 645 "bison_parser.y" +#line 650 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3820 "bison_parser.cpp" +#line 3825 "bison_parser.cpp" break; case 53: /* show_statement: SHOW COLUMNS table_name */ -#line 646 "bison_parser.y" +#line 651 "bison_parser.y" { (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 3830 "bison_parser.cpp" +#line 3835 "bison_parser.cpp" break; case 54: /* show_statement: DESCRIBE table_name */ -#line 651 "bison_parser.y" +#line 656 "bison_parser.y" { (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 3840 "bison_parser.cpp" +#line 3845 "bison_parser.cpp" break; case 55: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 662 "bison_parser.y" +#line 667 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3854,11 +3859,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3858 "bison_parser.cpp" +#line 3863 "bison_parser.cpp" break; case 56: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 675 "bison_parser.y" +#line 680 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3871,11 +3876,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3875 "bison_parser.cpp" +#line 3880 "bison_parser.cpp" break; case 57: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 687 "bison_parser.y" +#line 692 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3883,11 +3888,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3887 "bison_parser.cpp" +#line 3892 "bison_parser.cpp" break; case 58: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 694 "bison_parser.y" +#line 699 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3895,11 +3900,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3899 "bison_parser.cpp" +#line 3904 "bison_parser.cpp" break; case 59: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 701 "bison_parser.y" +#line 706 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3908,53 +3913,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3912 "bison_parser.cpp" +#line 3917 "bison_parser.cpp" break; case 60: /* opt_not_exists: IF NOT EXISTS */ -#line 710 "bison_parser.y" +#line 715 "bison_parser.y" { (yyval.bval) = true; } -#line 3918 "bison_parser.cpp" +#line 3923 "bison_parser.cpp" break; case 61: /* opt_not_exists: %empty */ -#line 711 "bison_parser.y" +#line 716 "bison_parser.y" { (yyval.bval) = false; } -#line 3924 "bison_parser.cpp" +#line 3929 "bison_parser.cpp" break; case 62: /* table_elem_commalist: table_elem */ -#line 713 "bison_parser.y" +#line 718 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3933 "bison_parser.cpp" +#line 3938 "bison_parser.cpp" break; case 63: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 717 "bison_parser.y" +#line 722 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3942 "bison_parser.cpp" +#line 3947 "bison_parser.cpp" break; case 64: /* table_elem: column_def */ -#line 722 "bison_parser.y" +#line 727 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3948 "bison_parser.cpp" +#line 3953 "bison_parser.cpp" break; case 65: /* table_elem: table_constraint */ -#line 723 "bison_parser.y" +#line 728 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3954 "bison_parser.cpp" +#line 3959 "bison_parser.cpp" break; case 66: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 725 "bison_parser.y" +#line 730 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3962,192 +3967,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3966 "bison_parser.cpp" +#line 3971 "bison_parser.cpp" break; case 67: /* column_type: BIGINT */ -#line 733 "bison_parser.y" +#line 738 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3972 "bison_parser.cpp" +#line 3977 "bison_parser.cpp" break; case 68: /* column_type: BOOLEAN */ -#line 734 "bison_parser.y" +#line 739 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3978 "bison_parser.cpp" +#line 3983 "bison_parser.cpp" break; case 69: /* column_type: CHAR '(' INTVAL ')' */ -#line 735 "bison_parser.y" +#line 740 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3984 "bison_parser.cpp" +#line 3989 "bison_parser.cpp" break; case 70: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 736 "bison_parser.y" +#line 741 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3990 "bison_parser.cpp" +#line 3995 "bison_parser.cpp" break; case 71: /* column_type: DATE */ -#line 737 "bison_parser.y" +#line 742 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3996 "bison_parser.cpp" +#line 4001 "bison_parser.cpp" break; case 72: /* column_type: DATETIME */ -#line 738 "bison_parser.y" +#line 743 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4002 "bison_parser.cpp" +#line 4007 "bison_parser.cpp" break; case 73: /* column_type: DECIMAL opt_decimal_specification */ -#line 739 "bison_parser.y" +#line 744 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 4011 "bison_parser.cpp" +#line 4016 "bison_parser.cpp" break; case 74: /* column_type: DOUBLE */ -#line 743 "bison_parser.y" +#line 748 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 4017 "bison_parser.cpp" +#line 4022 "bison_parser.cpp" break; case 75: /* column_type: FLOAT */ -#line 744 "bison_parser.y" +#line 749 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 4023 "bison_parser.cpp" +#line 4028 "bison_parser.cpp" break; case 76: /* column_type: INT */ -#line 745 "bison_parser.y" +#line 750 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4029 "bison_parser.cpp" +#line 4034 "bison_parser.cpp" break; case 77: /* column_type: INTEGER */ -#line 746 "bison_parser.y" +#line 751 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4035 "bison_parser.cpp" +#line 4040 "bison_parser.cpp" break; case 78: /* column_type: LONG */ -#line 747 "bison_parser.y" +#line 752 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 4041 "bison_parser.cpp" +#line 4046 "bison_parser.cpp" break; case 79: /* column_type: REAL */ -#line 748 "bison_parser.y" +#line 753 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 4047 "bison_parser.cpp" +#line 4052 "bison_parser.cpp" break; case 80: /* column_type: SMALLINT */ -#line 749 "bison_parser.y" +#line 754 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 4053 "bison_parser.cpp" +#line 4058 "bison_parser.cpp" break; case 81: /* column_type: TEXT */ -#line 750 "bison_parser.y" +#line 755 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 4059 "bison_parser.cpp" +#line 4064 "bison_parser.cpp" break; case 82: /* column_type: TIME opt_time_precision */ -#line 751 "bison_parser.y" +#line 756 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 4065 "bison_parser.cpp" +#line 4070 "bison_parser.cpp" break; case 83: /* column_type: TIMESTAMP */ -#line 752 "bison_parser.y" +#line 757 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4071 "bison_parser.cpp" +#line 4076 "bison_parser.cpp" break; case 84: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 753 "bison_parser.y" +#line 758 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4077 "bison_parser.cpp" +#line 4082 "bison_parser.cpp" break; case 85: /* opt_time_precision: '(' INTVAL ')' */ -#line 755 "bison_parser.y" +#line 760 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 4083 "bison_parser.cpp" +#line 4088 "bison_parser.cpp" break; case 86: /* opt_time_precision: %empty */ -#line 756 "bison_parser.y" +#line 761 "bison_parser.y" { (yyval.ival) = 0; } -#line 4089 "bison_parser.cpp" +#line 4094 "bison_parser.cpp" break; case 87: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 758 "bison_parser.y" +#line 763 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 4095 "bison_parser.cpp" +#line 4100 "bison_parser.cpp" break; case 88: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 759 "bison_parser.y" +#line 764 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 4101 "bison_parser.cpp" +#line 4106 "bison_parser.cpp" break; case 89: /* opt_decimal_specification: %empty */ -#line 760 "bison_parser.y" +#line 765 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 4107 "bison_parser.cpp" +#line 4112 "bison_parser.cpp" break; case 90: /* opt_column_constraints: column_constraints */ -#line 762 "bison_parser.y" +#line 767 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4113 "bison_parser.cpp" +#line 4118 "bison_parser.cpp" break; case 91: /* opt_column_constraints: %empty */ -#line 763 "bison_parser.y" +#line 768 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4119 "bison_parser.cpp" +#line 4124 "bison_parser.cpp" break; case 92: /* column_constraints: column_constraint */ -#line 765 "bison_parser.y" +#line 770 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4128 "bison_parser.cpp" +#line 4133 "bison_parser.cpp" break; case 93: /* column_constraints: column_constraints column_constraint */ -#line 769 "bison_parser.y" +#line 774 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4137 "bison_parser.cpp" +#line 4142 "bison_parser.cpp" break; case 94: /* column_constraints: references_spec */ -#line 773 "bison_parser.y" +#line 778 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4147 "bison_parser.cpp" +#line 4152 "bison_parser.cpp" break; case 95: /* column_constraints: column_constraints references_spec */ -#line 778 "bison_parser.y" +#line 783 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4155,159 +4160,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4159 "bison_parser.cpp" +#line 4164 "bison_parser.cpp" break; case 96: /* column_constraint: PRIMARY KEY */ -#line 786 "bison_parser.y" +#line 791 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4165 "bison_parser.cpp" +#line 4170 "bison_parser.cpp" break; case 97: /* column_constraint: UNIQUE */ -#line 787 "bison_parser.y" +#line 792 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4171 "bison_parser.cpp" +#line 4176 "bison_parser.cpp" break; case 98: /* column_constraint: NULL */ -#line 788 "bison_parser.y" +#line 793 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4177 "bison_parser.cpp" +#line 4182 "bison_parser.cpp" break; case 99: /* column_constraint: NOT NULL */ -#line 789 "bison_parser.y" +#line 794 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4183 "bison_parser.cpp" +#line 4188 "bison_parser.cpp" break; case 100: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 791 "bison_parser.y" +#line 796 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4189 "bison_parser.cpp" +#line 4194 "bison_parser.cpp" break; case 101: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 792 "bison_parser.y" +#line 797 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4195 "bison_parser.cpp" +#line 4200 "bison_parser.cpp" break; case 102: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 793 "bison_parser.y" +#line 798 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4201 "bison_parser.cpp" +#line 4206 "bison_parser.cpp" break; case 103: /* references_spec: REFERENCES table_name opt_column_list */ -#line 795 "bison_parser.y" +#line 800 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4207 "bison_parser.cpp" +#line 4212 "bison_parser.cpp" break; case 104: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 803 "bison_parser.y" +#line 808 "bison_parser.y" { (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 4218 "bison_parser.cpp" +#line 4223 "bison_parser.cpp" break; case 105: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 809 "bison_parser.y" +#line 814 "bison_parser.y" { (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 4229 "bison_parser.cpp" +#line 4234 "bison_parser.cpp" break; case 106: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 815 "bison_parser.y" +#line 820 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4239 "bison_parser.cpp" +#line 4244 "bison_parser.cpp" break; case 107: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 821 "bison_parser.y" +#line 826 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4249 "bison_parser.cpp" +#line 4254 "bison_parser.cpp" break; case 108: /* opt_exists: IF EXISTS */ -#line 827 "bison_parser.y" +#line 832 "bison_parser.y" { (yyval.bval) = true; } -#line 4255 "bison_parser.cpp" +#line 4260 "bison_parser.cpp" break; case 109: /* opt_exists: %empty */ -#line 828 "bison_parser.y" +#line 833 "bison_parser.y" { (yyval.bval) = false; } -#line 4261 "bison_parser.cpp" +#line 4266 "bison_parser.cpp" break; case 110: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 835 "bison_parser.y" +#line 840 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4271 "bison_parser.cpp" +#line 4276 "bison_parser.cpp" break; case 111: /* alter_action: drop_action */ -#line 841 "bison_parser.y" +#line 846 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4277 "bison_parser.cpp" +#line 4282 "bison_parser.cpp" break; case 112: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 843 "bison_parser.y" +#line 848 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4286 "bison_parser.cpp" +#line 4291 "bison_parser.cpp" break; case 113: /* delete_statement: DELETE FROM table_name opt_where */ -#line 853 "bison_parser.y" +#line 858 "bison_parser.y" { (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 4297 "bison_parser.cpp" +#line 4302 "bison_parser.cpp" break; case 114: /* truncate_statement: TRUNCATE table_name */ -#line 860 "bison_parser.y" +#line 865 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4307 "bison_parser.cpp" +#line 4312 "bison_parser.cpp" break; case 115: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 871 "bison_parser.y" +#line 876 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4315,11 +4320,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4319 "bison_parser.cpp" +#line 4324 "bison_parser.cpp" break; case 116: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 878 "bison_parser.y" +#line 883 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4327,80 +4332,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4331 "bison_parser.cpp" +#line 4336 "bison_parser.cpp" break; case 117: /* opt_column_list: '(' ident_commalist ')' */ -#line 886 "bison_parser.y" +#line 891 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4337 "bison_parser.cpp" +#line 4342 "bison_parser.cpp" break; case 118: /* opt_column_list: %empty */ -#line 887 "bison_parser.y" +#line 892 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4343 "bison_parser.cpp" +#line 4348 "bison_parser.cpp" break; case 119: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 894 "bison_parser.y" +#line 899 "bison_parser.y" { (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 4354 "bison_parser.cpp" +#line 4359 "bison_parser.cpp" break; case 120: /* update_clause_commalist: update_clause */ -#line 901 "bison_parser.y" +#line 906 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4363 "bison_parser.cpp" +#line 4368 "bison_parser.cpp" break; case 121: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 905 "bison_parser.y" +#line 910 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4372 "bison_parser.cpp" +#line 4377 "bison_parser.cpp" break; case 122: /* update_clause: IDENTIFIER '=' expr */ -#line 910 "bison_parser.y" +#line 915 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4382 "bison_parser.cpp" +#line 4387 "bison_parser.cpp" break; case 123: /* select_statement: opt_with_clause select_with_paren */ -#line 920 "bison_parser.y" +#line 925 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4391 "bison_parser.cpp" +#line 4396 "bison_parser.cpp" break; case 124: /* select_statement: opt_with_clause select_no_paren */ -#line 924 "bison_parser.y" +#line 929 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4400 "bison_parser.cpp" +#line 4405 "bison_parser.cpp" break; case 125: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 928 "bison_parser.y" +#line 933 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4412,17 +4417,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4416 "bison_parser.cpp" +#line 4421 "bison_parser.cpp" break; case 128: /* select_within_set_operation_no_parentheses: select_clause */ -#line 942 "bison_parser.y" +#line 947 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4422 "bison_parser.cpp" +#line 4427 "bison_parser.cpp" break; case 129: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 943 "bison_parser.y" +#line 948 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4431,23 +4436,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4435 "bison_parser.cpp" +#line 4440 "bison_parser.cpp" break; case 130: /* select_with_paren: '(' select_no_paren ')' */ -#line 952 "bison_parser.y" +#line 957 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4441 "bison_parser.cpp" +#line 4446 "bison_parser.cpp" break; case 131: /* select_with_paren: '(' select_with_paren ')' */ -#line 953 "bison_parser.y" +#line 958 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4447 "bison_parser.cpp" +#line 4452 "bison_parser.cpp" break; case 132: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 955 "bison_parser.y" +#line 960 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4462,11 +4467,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4466 "bison_parser.cpp" +#line 4471 "bison_parser.cpp" break; case 133: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 969 "bison_parser.y" +#line 974 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4478,59 +4483,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4482 "bison_parser.cpp" +#line 4487 "bison_parser.cpp" break; case 134: /* set_operator: set_type opt_all */ -#line 981 "bison_parser.y" +#line 986 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4491 "bison_parser.cpp" +#line 4496 "bison_parser.cpp" break; case 135: /* set_type: UNION */ -#line 986 "bison_parser.y" +#line 991 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4500 "bison_parser.cpp" +#line 4505 "bison_parser.cpp" break; case 136: /* set_type: INTERSECT */ -#line 990 "bison_parser.y" +#line 995 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4509 "bison_parser.cpp" +#line 4514 "bison_parser.cpp" break; case 137: /* set_type: EXCEPT */ -#line 994 "bison_parser.y" +#line 999 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4518 "bison_parser.cpp" +#line 4523 "bison_parser.cpp" break; case 138: /* opt_all: ALL */ -#line 999 "bison_parser.y" +#line 1004 "bison_parser.y" { (yyval.bval) = true; } -#line 4524 "bison_parser.cpp" +#line 4529 "bison_parser.cpp" break; case 139: /* opt_all: %empty */ -#line 1000 "bison_parser.y" +#line 1005 "bison_parser.y" { (yyval.bval) = false; } -#line 4530 "bison_parser.cpp" +#line 4535 "bison_parser.cpp" break; case 140: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 1002 "bison_parser.y" +#line 1007 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4540,239 +4545,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4544 "bison_parser.cpp" +#line 4549 "bison_parser.cpp" break; case 141: /* opt_distinct: DISTINCT */ -#line 1012 "bison_parser.y" +#line 1017 "bison_parser.y" { (yyval.bval) = true; } -#line 4550 "bison_parser.cpp" +#line 4555 "bison_parser.cpp" break; case 142: /* opt_distinct: %empty */ -#line 1013 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.bval) = false; } -#line 4556 "bison_parser.cpp" +#line 4561 "bison_parser.cpp" break; case 144: /* opt_from_clause: from_clause */ -#line 1017 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4562 "bison_parser.cpp" +#line 4567 "bison_parser.cpp" break; case 145: /* opt_from_clause: %empty */ -#line 1018 "bison_parser.y" +#line 1023 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4568 "bison_parser.cpp" +#line 4573 "bison_parser.cpp" break; case 146: /* from_clause: FROM table_ref */ -#line 1020 "bison_parser.y" +#line 1025 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4574 "bison_parser.cpp" +#line 4579 "bison_parser.cpp" break; case 147: /* opt_where: WHERE expr */ -#line 1022 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4580 "bison_parser.cpp" +#line 4585 "bison_parser.cpp" break; case 148: /* opt_where: %empty */ -#line 1023 "bison_parser.y" +#line 1028 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4586 "bison_parser.cpp" +#line 4591 "bison_parser.cpp" break; case 149: /* opt_group: GROUP BY expr_list opt_having */ -#line 1025 "bison_parser.y" +#line 1030 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4596 "bison_parser.cpp" +#line 4601 "bison_parser.cpp" break; case 150: /* opt_group: %empty */ -#line 1030 "bison_parser.y" +#line 1035 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4602 "bison_parser.cpp" +#line 4607 "bison_parser.cpp" break; case 151: /* opt_having: HAVING expr */ -#line 1032 "bison_parser.y" +#line 1037 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4608 "bison_parser.cpp" +#line 4613 "bison_parser.cpp" break; case 152: /* opt_having: %empty */ -#line 1033 "bison_parser.y" +#line 1038 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4614 "bison_parser.cpp" +#line 4619 "bison_parser.cpp" break; case 153: /* opt_order: ORDER BY order_list */ -#line 1035 "bison_parser.y" +#line 1040 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4620 "bison_parser.cpp" +#line 4625 "bison_parser.cpp" break; case 154: /* opt_order: %empty */ -#line 1036 "bison_parser.y" +#line 1041 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4626 "bison_parser.cpp" +#line 4631 "bison_parser.cpp" break; case 155: /* order_list: order_desc */ -#line 1038 "bison_parser.y" +#line 1043 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4635 "bison_parser.cpp" +#line 4640 "bison_parser.cpp" break; case 156: /* order_list: order_list ',' order_desc */ -#line 1042 "bison_parser.y" +#line 1047 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4644 "bison_parser.cpp" +#line 4649 "bison_parser.cpp" break; case 157: /* order_desc: expr opt_order_type */ -#line 1047 "bison_parser.y" +#line 1052 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4650 "bison_parser.cpp" +#line 4655 "bison_parser.cpp" break; case 158: /* opt_order_type: ASC */ -#line 1049 "bison_parser.y" +#line 1054 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4656 "bison_parser.cpp" +#line 4661 "bison_parser.cpp" break; case 159: /* opt_order_type: DESC */ -#line 1050 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4662 "bison_parser.cpp" +#line 4667 "bison_parser.cpp" break; case 160: /* opt_order_type: %empty */ -#line 1051 "bison_parser.y" +#line 1056 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4668 "bison_parser.cpp" +#line 4673 "bison_parser.cpp" break; case 161: /* opt_top: TOP int_literal */ -#line 1055 "bison_parser.y" +#line 1060 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4674 "bison_parser.cpp" +#line 4679 "bison_parser.cpp" break; case 162: /* opt_top: %empty */ -#line 1056 "bison_parser.y" +#line 1061 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4680 "bison_parser.cpp" +#line 4685 "bison_parser.cpp" break; case 163: /* opt_limit: LIMIT expr */ -#line 1058 "bison_parser.y" +#line 1063 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4686 "bison_parser.cpp" +#line 4691 "bison_parser.cpp" break; case 164: /* opt_limit: OFFSET expr */ -#line 1059 "bison_parser.y" +#line 1064 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4692 "bison_parser.cpp" +#line 4697 "bison_parser.cpp" break; case 165: /* opt_limit: LIMIT expr OFFSET expr */ -#line 1060 "bison_parser.y" +#line 1065 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4698 "bison_parser.cpp" +#line 4703 "bison_parser.cpp" break; case 166: /* opt_limit: LIMIT ALL */ -#line 1061 "bison_parser.y" +#line 1066 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4704 "bison_parser.cpp" +#line 4709 "bison_parser.cpp" break; case 167: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 1062 "bison_parser.y" +#line 1067 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4710 "bison_parser.cpp" +#line 4715 "bison_parser.cpp" break; case 168: /* opt_limit: %empty */ -#line 1063 "bison_parser.y" +#line 1068 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4716 "bison_parser.cpp" +#line 4721 "bison_parser.cpp" break; case 169: /* expr_list: expr_alias */ -#line 1068 "bison_parser.y" +#line 1073 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4725 "bison_parser.cpp" +#line 4730 "bison_parser.cpp" break; case 170: /* expr_list: expr_list ',' expr_alias */ -#line 1072 "bison_parser.y" +#line 1077 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4734 "bison_parser.cpp" +#line 4739 "bison_parser.cpp" break; case 171: /* opt_extended_literal_list: extended_literal_list */ -#line 1078 "bison_parser.y" +#line 1083 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4740 "bison_parser.cpp" +#line 4745 "bison_parser.cpp" break; case 172: /* opt_extended_literal_list: %empty */ -#line 1079 "bison_parser.y" +#line 1084 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4746 "bison_parser.cpp" +#line 4751 "bison_parser.cpp" break; case 173: /* extended_literal_list: casted_extended_literal */ -#line 1081 "bison_parser.y" +#line 1086 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4755 "bison_parser.cpp" +#line 4760 "bison_parser.cpp" break; case 174: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 1085 "bison_parser.y" +#line 1090 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4764 "bison_parser.cpp" +#line 4769 "bison_parser.cpp" break; case 176: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 1090 "bison_parser.y" +#line 1095 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4772 "bison_parser.cpp" +#line 4777 "bison_parser.cpp" break; case 177: /* extended_literal: literal */ -#line 1094 "bison_parser.y" +#line 1099 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4781,23 +4786,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4785 "bison_parser.cpp" +#line 4790 "bison_parser.cpp" break; case 178: /* extended_literal: '-' num_literal */ -#line 1102 "bison_parser.y" +#line 1107 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4791 "bison_parser.cpp" +#line 4796 "bison_parser.cpp" break; case 179: /* extended_literal: '-' interval_literal */ -#line 1103 "bison_parser.y" +#line 1108 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4797 "bison_parser.cpp" +#line 4802 "bison_parser.cpp" break; case 180: /* expr_alias: expr opt_alias */ -#line 1105 "bison_parser.y" +#line 1110 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4806,507 +4811,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4810 "bison_parser.cpp" +#line 4815 "bison_parser.cpp" break; case 186: /* operand: '(' expr ')' */ -#line 1116 "bison_parser.y" +#line 1121 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4816 "bison_parser.cpp" +#line 4821 "bison_parser.cpp" break; case 196: /* operand: '(' select_no_paren ')' */ -#line 1118 "bison_parser.y" +#line 1123 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4824 "bison_parser.cpp" +#line 4829 "bison_parser.cpp" break; case 199: /* unary_expr: '-' operand */ -#line 1124 "bison_parser.y" +#line 1129 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4830 "bison_parser.cpp" +#line 4835 "bison_parser.cpp" break; case 200: /* unary_expr: NOT operand */ -#line 1125 "bison_parser.y" +#line 1130 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4836 "bison_parser.cpp" +#line 4841 "bison_parser.cpp" break; case 201: /* unary_expr: operand ISNULL */ -#line 1126 "bison_parser.y" +#line 1131 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4842 "bison_parser.cpp" +#line 4847 "bison_parser.cpp" break; case 202: /* unary_expr: operand IS NULL */ -#line 1127 "bison_parser.y" +#line 1132 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4848 "bison_parser.cpp" +#line 4853 "bison_parser.cpp" break; case 203: /* unary_expr: operand IS NOT NULL */ -#line 1128 "bison_parser.y" +#line 1133 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4854 "bison_parser.cpp" +#line 4859 "bison_parser.cpp" break; case 205: /* binary_expr: operand '-' operand */ -#line 1130 "bison_parser.y" +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4860 "bison_parser.cpp" +#line 4865 "bison_parser.cpp" break; case 206: /* binary_expr: operand '+' operand */ -#line 1131 "bison_parser.y" +#line 1136 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4866 "bison_parser.cpp" +#line 4871 "bison_parser.cpp" break; case 207: /* binary_expr: operand '/' operand */ -#line 1132 "bison_parser.y" +#line 1137 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4872 "bison_parser.cpp" +#line 4877 "bison_parser.cpp" break; case 208: /* binary_expr: operand '*' operand */ -#line 1133 "bison_parser.y" +#line 1138 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4878 "bison_parser.cpp" +#line 4883 "bison_parser.cpp" break; case 209: /* binary_expr: operand '%' operand */ -#line 1134 "bison_parser.y" +#line 1139 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4884 "bison_parser.cpp" +#line 4889 "bison_parser.cpp" break; case 210: /* binary_expr: operand '^' operand */ -#line 1135 "bison_parser.y" +#line 1140 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4890 "bison_parser.cpp" +#line 4895 "bison_parser.cpp" break; case 211: /* binary_expr: operand LIKE operand */ -#line 1136 "bison_parser.y" +#line 1141 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4896 "bison_parser.cpp" +#line 4901 "bison_parser.cpp" break; case 212: /* binary_expr: operand NOT LIKE operand */ -#line 1137 "bison_parser.y" +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4902 "bison_parser.cpp" +#line 4907 "bison_parser.cpp" break; case 213: /* binary_expr: operand ILIKE operand */ -#line 1138 "bison_parser.y" +#line 1143 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4908 "bison_parser.cpp" +#line 4913 "bison_parser.cpp" break; case 214: /* binary_expr: operand CONCAT operand */ -#line 1139 "bison_parser.y" +#line 1144 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4914 "bison_parser.cpp" +#line 4919 "bison_parser.cpp" break; case 215: /* logic_expr: expr AND expr */ -#line 1141 "bison_parser.y" +#line 1146 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4920 "bison_parser.cpp" +#line 4925 "bison_parser.cpp" break; case 216: /* logic_expr: expr OR expr */ -#line 1142 "bison_parser.y" +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4926 "bison_parser.cpp" +#line 4931 "bison_parser.cpp" break; case 217: /* in_expr: operand IN '(' expr_list ')' */ -#line 1144 "bison_parser.y" +#line 1149 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4932 "bison_parser.cpp" +#line 4937 "bison_parser.cpp" break; case 218: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1145 "bison_parser.y" +#line 1150 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4938 "bison_parser.cpp" +#line 4943 "bison_parser.cpp" break; case 219: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1146 "bison_parser.y" +#line 1151 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4944 "bison_parser.cpp" +#line 4949 "bison_parser.cpp" break; case 220: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1147 "bison_parser.y" +#line 1152 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4950 "bison_parser.cpp" +#line 4955 "bison_parser.cpp" break; case 221: /* case_expr: CASE expr case_list END */ -#line 1151 "bison_parser.y" +#line 1156 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4956 "bison_parser.cpp" +#line 4961 "bison_parser.cpp" break; case 222: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1152 "bison_parser.y" +#line 1157 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4962 "bison_parser.cpp" +#line 4967 "bison_parser.cpp" break; case 223: /* case_expr: CASE case_list END */ -#line 1153 "bison_parser.y" +#line 1158 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4968 "bison_parser.cpp" +#line 4973 "bison_parser.cpp" break; case 224: /* case_expr: CASE case_list ELSE expr END */ -#line 1154 "bison_parser.y" +#line 1159 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4974 "bison_parser.cpp" +#line 4979 "bison_parser.cpp" break; case 225: /* case_list: WHEN expr THEN expr */ -#line 1156 "bison_parser.y" +#line 1161 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4980 "bison_parser.cpp" +#line 4985 "bison_parser.cpp" break; case 226: /* case_list: case_list WHEN expr THEN expr */ -#line 1157 "bison_parser.y" +#line 1162 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4986 "bison_parser.cpp" +#line 4991 "bison_parser.cpp" break; case 227: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1159 "bison_parser.y" +#line 1164 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4992 "bison_parser.cpp" +#line 4997 "bison_parser.cpp" break; case 228: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1160 "bison_parser.y" +#line 1165 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4998 "bison_parser.cpp" +#line 5003 "bison_parser.cpp" break; case 229: /* comp_expr: operand '=' operand */ -#line 1162 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5004 "bison_parser.cpp" +#line 5009 "bison_parser.cpp" break; case 230: /* comp_expr: operand EQUALS operand */ -#line 1163 "bison_parser.y" +#line 1168 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5010 "bison_parser.cpp" +#line 5015 "bison_parser.cpp" break; case 231: /* comp_expr: operand NOTEQUALS operand */ -#line 1164 "bison_parser.y" +#line 1169 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 5016 "bison_parser.cpp" +#line 5021 "bison_parser.cpp" break; case 232: /* comp_expr: operand '<' operand */ -#line 1165 "bison_parser.y" +#line 1170 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 5022 "bison_parser.cpp" +#line 5027 "bison_parser.cpp" break; case 233: /* comp_expr: operand '>' operand */ -#line 1166 "bison_parser.y" +#line 1171 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 5028 "bison_parser.cpp" +#line 5033 "bison_parser.cpp" break; case 234: /* comp_expr: operand LESSEQ operand */ -#line 1167 "bison_parser.y" +#line 1172 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 5034 "bison_parser.cpp" +#line 5039 "bison_parser.cpp" break; case 235: /* comp_expr: operand GREATEREQ operand */ -#line 1168 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 5040 "bison_parser.cpp" +#line 5045 "bison_parser.cpp" break; case 236: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1172 "bison_parser.y" +#line 1177 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 5046 "bison_parser.cpp" +#line 5051 "bison_parser.cpp" break; case 237: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1173 "bison_parser.y" +#line 1178 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 5052 "bison_parser.cpp" +#line 5057 "bison_parser.cpp" break; case 238: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1177 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 5058 "bison_parser.cpp" +#line 5063 "bison_parser.cpp" break; case 239: /* opt_window: %empty */ -#line 1178 "bison_parser.y" +#line 1183 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 5064 "bison_parser.cpp" +#line 5069 "bison_parser.cpp" break; case 240: /* opt_partition: PARTITION BY expr_list */ -#line 1180 "bison_parser.y" +#line 1185 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 5070 "bison_parser.cpp" +#line 5075 "bison_parser.cpp" break; case 241: /* opt_partition: %empty */ -#line 1181 "bison_parser.y" +#line 1186 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 5076 "bison_parser.cpp" +#line 5081 "bison_parser.cpp" break; case 242: /* opt_frame_clause: frame_type frame_bound */ -#line 1186 "bison_parser.y" +#line 1191 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 5082 "bison_parser.cpp" +#line 5087 "bison_parser.cpp" break; case 243: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1187 "bison_parser.y" +#line 1192 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 5088 "bison_parser.cpp" +#line 5093 "bison_parser.cpp" break; case 244: /* opt_frame_clause: %empty */ -#line 1188 "bison_parser.y" +#line 1193 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 5096 "bison_parser.cpp" +#line 5101 "bison_parser.cpp" break; case 245: /* frame_type: RANGE */ -#line 1192 "bison_parser.y" +#line 1197 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 5102 "bison_parser.cpp" +#line 5107 "bison_parser.cpp" break; case 246: /* frame_type: ROWS */ -#line 1193 "bison_parser.y" +#line 1198 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 5108 "bison_parser.cpp" +#line 5113 "bison_parser.cpp" break; case 247: /* frame_type: GROUPS */ -#line 1194 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5114 "bison_parser.cpp" +#line 5119 "bison_parser.cpp" break; case 248: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1196 "bison_parser.y" +#line 1201 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5120 "bison_parser.cpp" +#line 5125 "bison_parser.cpp" break; case 249: /* frame_bound: INTVAL PRECEDING */ -#line 1197 "bison_parser.y" +#line 1202 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5126 "bison_parser.cpp" +#line 5131 "bison_parser.cpp" break; case 250: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1198 "bison_parser.y" +#line 1203 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5132 "bison_parser.cpp" +#line 5137 "bison_parser.cpp" break; case 251: /* frame_bound: INTVAL FOLLOWING */ -#line 1199 "bison_parser.y" +#line 1204 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5138 "bison_parser.cpp" +#line 5143 "bison_parser.cpp" break; case 252: /* frame_bound: CURRENT_ROW */ -#line 1200 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5144 "bison_parser.cpp" +#line 5149 "bison_parser.cpp" break; case 253: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1202 "bison_parser.y" +#line 1207 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5150 "bison_parser.cpp" +#line 5155 "bison_parser.cpp" break; case 254: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1204 "bison_parser.y" +#line 1209 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5156 "bison_parser.cpp" +#line 5161 "bison_parser.cpp" break; case 255: /* datetime_field: SECOND */ -#line 1206 "bison_parser.y" +#line 1211 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5162 "bison_parser.cpp" +#line 5167 "bison_parser.cpp" break; case 256: /* datetime_field: MINUTE */ -#line 1207 "bison_parser.y" +#line 1212 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5168 "bison_parser.cpp" +#line 5173 "bison_parser.cpp" break; case 257: /* datetime_field: HOUR */ -#line 1208 "bison_parser.y" +#line 1213 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5174 "bison_parser.cpp" +#line 5179 "bison_parser.cpp" break; case 258: /* datetime_field: DAY */ -#line 1209 "bison_parser.y" +#line 1214 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5180 "bison_parser.cpp" +#line 5185 "bison_parser.cpp" break; case 259: /* datetime_field: MONTH */ -#line 1210 "bison_parser.y" +#line 1215 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5186 "bison_parser.cpp" +#line 5191 "bison_parser.cpp" break; case 260: /* datetime_field: YEAR */ -#line 1211 "bison_parser.y" +#line 1216 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5192 "bison_parser.cpp" +#line 5197 "bison_parser.cpp" break; case 261: /* datetime_field_plural: SECONDS */ -#line 1213 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5198 "bison_parser.cpp" +#line 5203 "bison_parser.cpp" break; case 262: /* datetime_field_plural: MINUTES */ -#line 1214 "bison_parser.y" +#line 1219 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5204 "bison_parser.cpp" +#line 5209 "bison_parser.cpp" break; case 263: /* datetime_field_plural: HOURS */ -#line 1215 "bison_parser.y" +#line 1220 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5210 "bison_parser.cpp" +#line 5215 "bison_parser.cpp" break; case 264: /* datetime_field_plural: DAYS */ -#line 1216 "bison_parser.y" +#line 1221 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5216 "bison_parser.cpp" +#line 5221 "bison_parser.cpp" break; case 265: /* datetime_field_plural: MONTHS */ -#line 1217 "bison_parser.y" +#line 1222 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5222 "bison_parser.cpp" +#line 5227 "bison_parser.cpp" break; case 266: /* datetime_field_plural: YEARS */ -#line 1218 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5228 "bison_parser.cpp" +#line 5233 "bison_parser.cpp" break; case 269: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1222 "bison_parser.y" +#line 1227 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5234 "bison_parser.cpp" +#line 5239 "bison_parser.cpp" break; case 270: /* array_index: operand '[' int_literal ']' */ -#line 1224 "bison_parser.y" +#line 1229 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5240 "bison_parser.cpp" +#line 5245 "bison_parser.cpp" break; case 271: /* between_expr: operand BETWEEN operand AND operand */ -#line 1226 "bison_parser.y" +#line 1231 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5246 "bison_parser.cpp" +#line 5251 "bison_parser.cpp" break; case 272: /* column_name: IDENTIFIER */ -#line 1228 "bison_parser.y" +#line 1233 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5252 "bison_parser.cpp" +#line 5257 "bison_parser.cpp" break; case 273: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1229 "bison_parser.y" +#line 1234 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5258 "bison_parser.cpp" +#line 5263 "bison_parser.cpp" break; case 274: /* column_name: '*' */ -#line 1230 "bison_parser.y" +#line 1235 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5264 "bison_parser.cpp" +#line 5269 "bison_parser.cpp" break; case 275: /* column_name: IDENTIFIER '.' '*' */ -#line 1231 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5270 "bison_parser.cpp" +#line 5275 "bison_parser.cpp" break; case 283: /* string_literal: STRING */ -#line 1235 "bison_parser.y" +#line 1240 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5276 "bison_parser.cpp" +#line 5281 "bison_parser.cpp" break; case 284: /* bool_literal: TRUE */ -#line 1237 "bison_parser.y" +#line 1242 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5282 "bison_parser.cpp" +#line 5287 "bison_parser.cpp" break; case 285: /* bool_literal: FALSE */ -#line 1238 "bison_parser.y" +#line 1243 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5288 "bison_parser.cpp" +#line 5293 "bison_parser.cpp" break; case 286: /* num_literal: FLOATVAL */ -#line 1240 "bison_parser.y" +#line 1245 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5294 "bison_parser.cpp" +#line 5299 "bison_parser.cpp" break; case 288: /* int_literal: INTVAL */ -#line 1243 "bison_parser.y" +#line 1248 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5300 "bison_parser.cpp" +#line 5305 "bison_parser.cpp" break; case 289: /* null_literal: NULL */ -#line 1245 "bison_parser.y" +#line 1250 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5306 "bison_parser.cpp" +#line 5311 "bison_parser.cpp" break; case 290: /* date_literal: DATE STRING */ -#line 1247 "bison_parser.y" +#line 1252 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5317,17 +5322,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5321 "bison_parser.cpp" +#line 5326 "bison_parser.cpp" break; case 291: /* interval_literal: INTVAL duration_field */ -#line 1258 "bison_parser.y" +#line 1263 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5327 "bison_parser.cpp" +#line 5332 "bison_parser.cpp" break; case 292: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1259 "bison_parser.y" +#line 1264 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5339,11 +5344,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5343 "bison_parser.cpp" +#line 5348 "bison_parser.cpp" break; case 293: /* interval_literal: INTERVAL STRING */ -#line 1270 "bison_parser.y" +#line 1275 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5375,61 +5380,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5379 "bison_parser.cpp" +#line 5384 "bison_parser.cpp" break; case 294: /* param_expr: '?' */ -#line 1302 "bison_parser.y" +#line 1307 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5389 "bison_parser.cpp" +#line 5394 "bison_parser.cpp" break; case 296: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1311 "bison_parser.y" +#line 1316 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5400 "bison_parser.cpp" +#line 5405 "bison_parser.cpp" break; case 300: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1320 "bison_parser.y" +#line 1325 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5411 "bison_parser.cpp" +#line 5416 "bison_parser.cpp" break; case 301: /* table_ref_commalist: table_ref_atomic */ -#line 1327 "bison_parser.y" +#line 1332 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5420 "bison_parser.cpp" +#line 5425 "bison_parser.cpp" break; case 302: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1331 "bison_parser.y" +#line 1336 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5429 "bison_parser.cpp" +#line 5434 "bison_parser.cpp" break; case 303: /* table_ref_name: table_name opt_table_alias */ -#line 1336 "bison_parser.y" +#line 1341 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5437,215 +5442,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5441 "bison_parser.cpp" +#line 5446 "bison_parser.cpp" break; case 304: /* table_ref_name_no_alias: table_name */ -#line 1344 "bison_parser.y" +#line 1349 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5451 "bison_parser.cpp" +#line 5456 "bison_parser.cpp" break; case 305: /* table_name: IDENTIFIER */ -#line 1350 "bison_parser.y" +#line 1355 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5460 "bison_parser.cpp" +#line 5465 "bison_parser.cpp" break; case 306: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1354 "bison_parser.y" +#line 1359 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5469 "bison_parser.cpp" +#line 5474 "bison_parser.cpp" break; case 307: /* opt_index_name: IDENTIFIER */ -#line 1359 "bison_parser.y" +#line 1364 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5475 "bison_parser.cpp" +#line 5480 "bison_parser.cpp" break; case 308: /* opt_index_name: %empty */ -#line 1360 "bison_parser.y" +#line 1365 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5481 "bison_parser.cpp" +#line 5486 "bison_parser.cpp" break; case 310: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1362 "bison_parser.y" +#line 1367 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5487 "bison_parser.cpp" +#line 5492 "bison_parser.cpp" break; case 312: /* opt_table_alias: %empty */ -#line 1364 "bison_parser.y" +#line 1369 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5493 "bison_parser.cpp" +#line 5498 "bison_parser.cpp" break; case 313: /* alias: AS IDENTIFIER */ -#line 1366 "bison_parser.y" +#line 1371 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5499 "bison_parser.cpp" +#line 5504 "bison_parser.cpp" break; case 314: /* alias: IDENTIFIER */ -#line 1367 "bison_parser.y" +#line 1372 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5505 "bison_parser.cpp" +#line 5510 "bison_parser.cpp" break; case 316: /* opt_alias: %empty */ -#line 1369 "bison_parser.y" +#line 1374 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5511 "bison_parser.cpp" +#line 5516 "bison_parser.cpp" break; case 317: /* opt_locking_clause: opt_locking_clause_list */ -#line 1375 "bison_parser.y" +#line 1380 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5517 "bison_parser.cpp" +#line 5522 "bison_parser.cpp" break; case 318: /* opt_locking_clause: %empty */ -#line 1376 "bison_parser.y" +#line 1381 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5523 "bison_parser.cpp" +#line 5528 "bison_parser.cpp" break; case 319: /* opt_locking_clause_list: locking_clause */ -#line 1378 "bison_parser.y" +#line 1383 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5532 "bison_parser.cpp" +#line 5537 "bison_parser.cpp" break; case 320: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1382 "bison_parser.y" +#line 1387 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5541 "bison_parser.cpp" +#line 5546 "bison_parser.cpp" break; case 321: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1387 "bison_parser.y" +#line 1392 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5552 "bison_parser.cpp" +#line 5557 "bison_parser.cpp" break; case 322: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1393 "bison_parser.y" +#line 1398 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5563 "bison_parser.cpp" +#line 5568 "bison_parser.cpp" break; case 323: /* row_lock_mode: UPDATE */ -#line 1400 "bison_parser.y" +#line 1405 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5569 "bison_parser.cpp" +#line 5574 "bison_parser.cpp" break; case 324: /* row_lock_mode: NO KEY UPDATE */ -#line 1401 "bison_parser.y" +#line 1406 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5575 "bison_parser.cpp" +#line 5580 "bison_parser.cpp" break; case 325: /* row_lock_mode: SHARE */ -#line 1402 "bison_parser.y" +#line 1407 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5581 "bison_parser.cpp" +#line 5586 "bison_parser.cpp" break; case 326: /* row_lock_mode: KEY SHARE */ -#line 1403 "bison_parser.y" +#line 1408 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5587 "bison_parser.cpp" +#line 5592 "bison_parser.cpp" break; case 327: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1405 "bison_parser.y" +#line 1410 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5593 "bison_parser.cpp" +#line 5598 "bison_parser.cpp" break; case 328: /* opt_row_lock_policy: NOWAIT */ -#line 1406 "bison_parser.y" +#line 1411 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5599 "bison_parser.cpp" +#line 5604 "bison_parser.cpp" break; case 329: /* opt_row_lock_policy: %empty */ -#line 1407 "bison_parser.y" +#line 1412 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5605 "bison_parser.cpp" +#line 5610 "bison_parser.cpp" break; case 331: /* opt_with_clause: %empty */ -#line 1413 "bison_parser.y" +#line 1418 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5611 "bison_parser.cpp" +#line 5616 "bison_parser.cpp" break; case 332: /* with_clause: WITH with_description_list */ -#line 1415 "bison_parser.y" +#line 1420 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5617 "bison_parser.cpp" +#line 5622 "bison_parser.cpp" break; case 333: /* with_description_list: with_description */ -#line 1417 "bison_parser.y" +#line 1422 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5626 "bison_parser.cpp" +#line 5631 "bison_parser.cpp" break; case 334: /* with_description_list: with_description_list ',' with_description */ -#line 1421 "bison_parser.y" +#line 1426 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5635 "bison_parser.cpp" +#line 5640 "bison_parser.cpp" break; case 335: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1426 "bison_parser.y" +#line 1431 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5645 "bison_parser.cpp" +#line 5650 "bison_parser.cpp" break; case 336: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1436 "bison_parser.y" +#line 1441 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5653,11 +5658,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5657 "bison_parser.cpp" +#line 5662 "bison_parser.cpp" break; case 337: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1443 "bison_parser.y" +#line 1448 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5666,11 +5671,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5670 "bison_parser.cpp" +#line 5675 "bison_parser.cpp" break; case 338: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1451 "bison_parser.y" +#line 1456 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5679,89 +5684,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5683 "bison_parser.cpp" +#line 5688 "bison_parser.cpp" break; case 339: /* opt_join_type: INNER */ -#line 1460 "bison_parser.y" +#line 1465 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5689 "bison_parser.cpp" +#line 5694 "bison_parser.cpp" break; case 340: /* opt_join_type: LEFT OUTER */ -#line 1461 "bison_parser.y" +#line 1466 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5695 "bison_parser.cpp" +#line 5700 "bison_parser.cpp" break; case 341: /* opt_join_type: LEFT */ -#line 1462 "bison_parser.y" +#line 1467 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5701 "bison_parser.cpp" +#line 5706 "bison_parser.cpp" break; case 342: /* opt_join_type: RIGHT OUTER */ -#line 1463 "bison_parser.y" +#line 1468 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5707 "bison_parser.cpp" +#line 5712 "bison_parser.cpp" break; case 343: /* opt_join_type: RIGHT */ -#line 1464 "bison_parser.y" +#line 1469 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5713 "bison_parser.cpp" +#line 5718 "bison_parser.cpp" break; case 344: /* opt_join_type: FULL OUTER */ -#line 1465 "bison_parser.y" +#line 1470 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5719 "bison_parser.cpp" +#line 5724 "bison_parser.cpp" break; case 345: /* opt_join_type: OUTER */ -#line 1466 "bison_parser.y" +#line 1471 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5725 "bison_parser.cpp" +#line 5730 "bison_parser.cpp" break; case 346: /* opt_join_type: FULL */ -#line 1467 "bison_parser.y" +#line 1472 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5731 "bison_parser.cpp" +#line 5736 "bison_parser.cpp" break; case 347: /* opt_join_type: CROSS */ -#line 1468 "bison_parser.y" +#line 1473 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5737 "bison_parser.cpp" +#line 5742 "bison_parser.cpp" break; case 348: /* opt_join_type: %empty */ -#line 1469 "bison_parser.y" +#line 1474 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5743 "bison_parser.cpp" +#line 5748 "bison_parser.cpp" break; case 352: /* ident_commalist: IDENTIFIER */ -#line 1480 "bison_parser.y" +#line 1485 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5752 "bison_parser.cpp" +#line 5757 "bison_parser.cpp" break; case 353: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1484 "bison_parser.y" +#line 1489 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5761 "bison_parser.cpp" +#line 5766 "bison_parser.cpp" break; -#line 5765 "bison_parser.cpp" +#line 5770 "bison_parser.cpp" default: break; } @@ -5990,7 +5995,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1490 "bison_parser.y" +#line 1495 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 33583532..2220fdc3 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -344,7 +344,7 @@ union HSQL_STYPE hsql::RowLockWaitPolicy lock_wait_policy_t; hsql::ImportExportOptions* import_export_option_t; - hsql::CsvImportExportOptions* csv_import_export_option_t; + std::pair* csv_option_t; // clang-format off diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 8294f9df..a8bd715b 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -168,7 +168,7 @@ hsql::RowLockWaitPolicy lock_wait_policy_t; hsql::ImportExportOptions* import_export_option_t; - hsql::CsvImportExportOptions* csv_import_export_option_t; + std::pair* csv_option_t; // clang-format off } @@ -293,7 +293,7 @@ // ImportType is used for compatibility reasons %type file_type %type opt_import_export_options import_export_options -%type csv_import_export_options +%type csv_option %type ident_commalist opt_column_list %type expr_list select_list opt_extended_literal_list extended_literal_list hint_list opt_hints opt_partition @@ -505,7 +505,7 @@ import_export_options : import_export_options ',' FORMAT file_type { } if ($1->csv_options && $4 != kImportCSV && $4 != kImportAuto) { delete $1; - yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) are only allowed for CSV files."); YYERROR; } $1->format = $4; @@ -529,78 +529,83 @@ import_export_options : import_export_options ',' FORMAT file_type { $$ = new ImportExportOptions{}; $$->encoding = $2; } -| import_export_options ',' csv_import_export_options { +| import_export_options ',' csv_option { if ($1->format != kImportAuto && $1->format != kImportCSV) { delete $1; + free($3->second); delete $3; - yyerror(&yyloc, result, scanner, "Cannot have CSV options (DELIMITER, NULL, QUOTE) without CSV import type."); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) are only allowed for CSV files."); YYERROR; } - if ($1->csv_options) { - if ($1->csv_options->delimiter && $3->delimiter) { - delete $1; - delete $3; - yyerror(&yyloc, result, scanner, "Delimiter must only be provided once."); - YYERROR; - } - if ($1->csv_options->null && $3->null) { - delete $1; - delete $3; - yyerror(&yyloc, result, scanner, "Null string must only be provided once."); - YYERROR; - } - if ($1->csv_options->quote && $3->quote) { - delete $1; - delete $3; - yyerror(&yyloc, result, scanner, "Quote must only be provided once."); - YYERROR; - } + if ($1->csv_options == nullptr) { + $1->csv_options = new CsvOptions{}; + } - if ($3->delimiter) { - $1->csv_options->delimiter = $3->delimiter; - $3->delimiter = nullptr; - } - if ($3->null) { - $1->csv_options->null = $3->null; - $3->null = nullptr; +#define ASSERT_IS_NULLPTR(ptr) \ + if ((ptr) != nullptr) { \ + delete $1; \ + free($3->second); \ + delete $3; \ + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); \ + YYERROR; \ + } - } - if ($3->quote) { - $1->csv_options->quote = $3->quote; - $3->quote = nullptr; - } - delete $3; + if ($3->first == hsql::CsvOptionType::Delimiter) { + ASSERT_IS_NULLPTR($1->csv_options->delimiter); + $$->csv_options->delimiter = $3->second; + } else if ($3->first == hsql::CsvOptionType::Null) { + ASSERT_IS_NULLPTR($1->csv_options->null); + $$->csv_options->null = $3->second; + } else if ($3->first == hsql::CsvOptionType::Quote) { + ASSERT_IS_NULLPTR($1->csv_options->quote); + $$->csv_options->quote = $3->second; } else { - $1->csv_options = $3; + delete $1; + free($3->second); + delete $3; + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } + delete $3; $$ = $1; } -| csv_import_export_options { +| csv_option { $$ = new ImportExportOptions{}; - $$->csv_options = $1; + $$->csv_options = new CsvOptions{}; + + if ($1->first == hsql::CsvOptionType::Delimiter) { + $$->csv_options->delimiter = $1->second; + } else if ($1->first == hsql::CsvOptionType::Null) { + $$->csv_options->null = $1->second; + } else if ($1->first == hsql::CsvOptionType::Quote) { + $$->csv_options->quote = $1->second; + } else { + free($1->second); + delete $1; + delete $$; + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; + } + + delete $1; } -csv_import_export_options : IDENTIFIER STRING { - $$ = new CsvImportExportOptions{}; +csv_option : IDENTIFIER STRING { if (strcasecmp($1, "DELIMITER") == 0) { - $$->delimiter = $2; + $$ = new std::pair(hsql::CsvOptionType::Delimiter, $2); } else if (strcasecmp($1, "QUOTE") == 0) { - $$->quote = $2; + $$ = new std::pair(hsql::CsvOptionType::Quote, $2); } else { - delete $$; free($1); free($2); - yyerror(&yyloc, result, scanner, "Unknown identifier when parsing CSV options."); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); YYERROR; } free($1); } -| NULL STRING { - $$ = new CsvImportExportOptions{}; - $$->null = $2; -} +| NULL STRING { $$ = new std::pair(hsql::CsvOptionType::Null, $2); } /****************************** * Export Statement diff --git a/src/sql/CsvImportExportOptions.h b/src/sql/CsvImportExportOptions.h deleted file mode 100644 index 2edaaa6d..00000000 --- a/src/sql/CsvImportExportOptions.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SQLPARSER_CSV_IMPORT_EXPORT_OPTIONS_H -#define SQLPARSER_CSV_IMPORT_EXPORT_OPTIONS_H - -namespace hsql { - -struct CsvImportExportOptions { - CsvImportExportOptions(); - ~CsvImportExportOptions(); - - char* delimiter; - char* null; - char* quote; -}; - -} // namespace hsql - -#endif diff --git a/src/sql/ExportStatement.h b/src/sql/ExportStatement.h index 74245953..bd7ef3ac 100755 --- a/src/sql/ExportStatement.h +++ b/src/sql/ExportStatement.h @@ -1,7 +1,6 @@ #ifndef SQLPARSER_EXPORT_STATEMENT_H #define SQLPARSER_EXPORT_STATEMENT_H -#include "CsvImportExportOptions.h" #include "ImportExportOptions.h" #include "SQLStatement.h" #include "SelectStatement.h" @@ -19,7 +18,7 @@ struct ExportStatement : SQLStatement { char* tableName; SelectStatement* select; char* encoding; - CsvImportExportOptions* csv_options; + CsvOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/ImportExportOptions.h b/src/sql/ImportExportOptions.h index c91a30c1..9c49bde8 100644 --- a/src/sql/ImportExportOptions.h +++ b/src/sql/ImportExportOptions.h @@ -1,8 +1,6 @@ #ifndef SQLPARSER_IMPORT_EXPORT_OPTIONS_H #define SQLPARSER_IMPORT_EXPORT_OPTIONS_H -#include "CsvImportExportOptions.h" - namespace hsql { // Name unchanged for compatibility. Historically, this was only used for import statements before we introduced export @@ -15,13 +13,28 @@ enum ImportType { kImportAuto }; +enum CsvOptionType { + Delimiter, + Null, + Quote, +}; + +struct CsvOptions { + CsvOptions(); + ~CsvOptions(); + + char* delimiter; + char* null; + char* quote; +}; + struct ImportExportOptions { ImportExportOptions(); ~ImportExportOptions(); ImportType format; char* encoding; - CsvImportExportOptions* csv_options; + CsvOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/ImportStatement.h b/src/sql/ImportStatement.h index d3e7c3a9..b3119dec 100644 --- a/src/sql/ImportStatement.h +++ b/src/sql/ImportStatement.h @@ -1,7 +1,6 @@ #ifndef SQLPARSER_IMPORT_STATEMENT_H #define SQLPARSER_IMPORT_STATEMENT_H -#include "CsvImportExportOptions.h" #include "ImportExportOptions.h" #include "SQLStatement.h" @@ -18,7 +17,7 @@ struct ImportStatement : SQLStatement { char* tableName; Expr* whereClause; char* encoding; - CsvImportExportOptions* csv_options; + CsvOptions* csv_options; }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index f5e4af30..f891d647 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -152,8 +152,8 @@ ExportStatement::~ExportStatement() { delete csv_options; } -CsvImportExportOptions::CsvImportExportOptions() : delimiter(nullptr), null(nullptr), quote(nullptr) {} -CsvImportExportOptions::~CsvImportExportOptions() { +CsvOptions::CsvOptions() : delimiter(nullptr), null(nullptr), quote(nullptr) {} +CsvOptions::~CsvOptions() { free(delimiter); free(null); free(quote); diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 3dcb612a..d5b01657 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -53,7 +53,6 @@ !SELECT * FROM t WHERE a = DATE '2000-01-01' + x DAYS; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL 'x' DAY; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL '3.3 DAYS'; -!COPY students FROM 'file_path' WITH (FORMAT TBL, DELIMITER '|', NULL '', QUOTE '"'); # Cannot have CSV options with non-CSV format # ON is not supported by postgres. We follow postgres here since the sql-92 standard does not specify index # implementation details. !DROP INDEX myindex ON mytable; @@ -94,3 +93,8 @@ !SELECT * FROM foo WITH HINT (?); !SELECT * FROM foo WITH HINT (CAST(column_a AS INT)); !SELECT * FROM foo WITH HINT (AVG(another_column)); +# CSV options +!COPY students FROM 'file_path' WITH (FORMAT TBL, DELIMITER '|', NULL '', QUOTE '"'); +!COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', FORMAT TBL); +!COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', NULL 'a'); +!COPY students FROM 'file_path' WITH (FORMAT CSV, QUOTE '"', DELIMINIMITER '|'); diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index c8fef797..69d6b1aa 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -75,6 +75,7 @@ COPY students FROM 'file_path' WITH (FORMAT CSV); COPY students FROM 'file_path' WITH (FORMAT BIN); COPY students FROM 'file_path' WITH (FORMAT BINARY); COPY students FROM 'file_path' WITH (FORMAT CSV, DELIMITER '|', NULL '', QUOTE '"'); +COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', FORMAT CSV, QUOTE '"'); COPY students FROM 'file_path' (FORMAT TBL); COPY good_students FROM 'file_path' WHERE grade > (SELECT AVG(grade) from alumni); COPY students TO 'student.tbl'; From 0110e598c04b3145f11b755609699cd3573c122a Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Tue, 5 Aug 2025 12:05:03 +0200 Subject: [PATCH 04/10] Add type specifier to std::pair --- src/parser/bison_parser.cpp | 6 +++--- src/parser/bison_parser.y | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index ea0fd748..f3c06cf1 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -3759,9 +3759,9 @@ YYLTYPE yylloc = yyloc_default; #line 595 "bison_parser.y" { if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { - (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Delimiter, (yyvsp[0].sval)); + (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Delimiter, (yyvsp[0].sval)); } else if (strcasecmp((yyvsp[-1].sval), "QUOTE") == 0) { - (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Quote, (yyvsp[0].sval)); + (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Quote, (yyvsp[0].sval)); } else { free((yyvsp[-1].sval)); free((yyvsp[0].sval)); @@ -3775,7 +3775,7 @@ YYLTYPE yylloc = yyloc_default; case 49: /* csv_option: NULL STRING */ #line 608 "bison_parser.y" - { (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Null, (yyvsp[0].sval)); } + { (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Null, (yyvsp[0].sval)); } #line 3780 "bison_parser.cpp" break; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index a8bd715b..0ff5dc5f 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -594,9 +594,9 @@ import_export_options : import_export_options ',' FORMAT file_type { csv_option : IDENTIFIER STRING { if (strcasecmp($1, "DELIMITER") == 0) { - $$ = new std::pair(hsql::CsvOptionType::Delimiter, $2); + $$ = new std::pair(hsql::CsvOptionType::Delimiter, $2); } else if (strcasecmp($1, "QUOTE") == 0) { - $$ = new std::pair(hsql::CsvOptionType::Quote, $2); + $$ = new std::pair(hsql::CsvOptionType::Quote, $2); } else { free($1); free($2); @@ -605,7 +605,7 @@ csv_option : IDENTIFIER STRING { } free($1); } -| NULL STRING { $$ = new std::pair(hsql::CsvOptionType::Null, $2); } +| NULL STRING { $$ = new std::pair(hsql::CsvOptionType::Null, $2); } /****************************** * Export Statement From 14069d85c243aad64ddb1e729a4911a7085ce8b7 Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Mon, 25 Aug 2025 20:23:11 +0200 Subject: [PATCH 05/10] Implement destructor, switch, remove namespace prefix and add more bad testcases --- src/parser/bison_parser.cpp | 1499 +++++++++++++++++----------------- src/parser/bison_parser.y | 86 +- test/queries/queries-bad.sql | 2 + 3 files changed, 808 insertions(+), 779 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index f3c06cf1..c754ce40 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -873,42 +873,42 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 337, 337, 356, 362, 369, 373, 377, 378, 379, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 396, 397, 399, 403, 408, 412, 422, 423, 424, 426, - 426, 432, 438, 440, 444, 456, 462, 479, 494, 496, - 497, 498, 500, 514, 518, 528, 532, 574, 595, 608, - 615, 630, 650, 651, 656, 667, 680, 692, 699, 706, - 715, 716, 718, 722, 727, 728, 730, 738, 739, 740, - 741, 742, 743, 744, 748, 749, 750, 751, 752, 753, - 754, 755, 756, 757, 758, 760, 761, 763, 764, 765, - 767, 768, 770, 774, 778, 783, 791, 792, 793, 794, - 796, 797, 798, 800, 808, 814, 820, 826, 832, 833, - 840, 846, 848, 858, 865, 876, 883, 891, 892, 899, - 906, 910, 915, 925, 929, 933, 945, 945, 947, 948, - 957, 958, 960, 974, 986, 991, 995, 999, 1004, 1005, - 1007, 1017, 1018, 1020, 1022, 1023, 1025, 1027, 1028, 1030, - 1035, 1037, 1038, 1040, 1041, 1043, 1047, 1052, 1054, 1055, - 1056, 1060, 1061, 1063, 1064, 1065, 1066, 1067, 1068, 1073, - 1077, 1083, 1084, 1086, 1090, 1095, 1095, 1099, 1107, 1108, - 1110, 1119, 1119, 1119, 1119, 1119, 1121, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1123, 1123, 1127, 1127, 1129, - 1130, 1131, 1132, 1133, 1135, 1135, 1136, 1137, 1138, 1139, - 1140, 1141, 1142, 1143, 1144, 1146, 1147, 1149, 1150, 1151, - 1152, 1156, 1157, 1158, 1159, 1161, 1162, 1164, 1165, 1167, - 1168, 1169, 1170, 1171, 1172, 1173, 1177, 1178, 1182, 1183, - 1185, 1186, 1191, 1192, 1193, 1197, 1198, 1199, 1201, 1202, - 1203, 1204, 1205, 1207, 1209, 1211, 1212, 1213, 1214, 1215, - 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1225, 1225, 1227, - 1229, 1231, 1233, 1234, 1235, 1236, 1238, 1238, 1238, 1238, - 1238, 1238, 1238, 1240, 1242, 1243, 1245, 1246, 1248, 1250, - 1252, 1263, 1264, 1275, 1307, 1316, 1316, 1323, 1323, 1325, - 1325, 1332, 1336, 1341, 1349, 1355, 1359, 1364, 1365, 1367, - 1367, 1369, 1369, 1371, 1372, 1374, 1374, 1380, 1381, 1383, - 1387, 1392, 1398, 1405, 1406, 1407, 1408, 1410, 1411, 1412, - 1418, 1418, 1420, 1422, 1426, 1431, 1441, 1448, 1456, 1465, - 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1476, - 1482, 1482, 1485, 1489 + 0, 338, 338, 357, 363, 370, 374, 378, 379, 380, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 397, 398, 400, 404, 409, 413, 423, 424, 425, 427, + 427, 433, 439, 441, 445, 457, 463, 480, 495, 497, + 498, 499, 501, 515, 519, 529, 533, 584, 609, 622, + 629, 644, 664, 665, 670, 681, 694, 706, 713, 720, + 729, 730, 732, 736, 741, 742, 744, 752, 753, 754, + 755, 756, 757, 758, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 774, 775, 777, 778, 779, + 781, 782, 784, 788, 792, 797, 805, 806, 807, 808, + 810, 811, 812, 814, 822, 828, 834, 840, 846, 847, + 854, 860, 862, 872, 879, 890, 897, 905, 906, 913, + 920, 924, 929, 939, 943, 947, 959, 959, 961, 962, + 971, 972, 974, 988, 1000, 1005, 1009, 1013, 1018, 1019, + 1021, 1031, 1032, 1034, 1036, 1037, 1039, 1041, 1042, 1044, + 1049, 1051, 1052, 1054, 1055, 1057, 1061, 1066, 1068, 1069, + 1070, 1074, 1075, 1077, 1078, 1079, 1080, 1081, 1082, 1087, + 1091, 1097, 1098, 1100, 1104, 1109, 1109, 1113, 1121, 1122, + 1124, 1133, 1133, 1133, 1133, 1133, 1135, 1136, 1136, 1136, + 1136, 1136, 1136, 1136, 1136, 1137, 1137, 1141, 1141, 1143, + 1144, 1145, 1146, 1147, 1149, 1149, 1150, 1151, 1152, 1153, + 1154, 1155, 1156, 1157, 1158, 1160, 1161, 1163, 1164, 1165, + 1166, 1170, 1171, 1172, 1173, 1175, 1176, 1178, 1179, 1181, + 1182, 1183, 1184, 1185, 1186, 1187, 1191, 1192, 1196, 1197, + 1199, 1200, 1205, 1206, 1207, 1211, 1212, 1213, 1215, 1216, + 1217, 1218, 1219, 1221, 1223, 1225, 1226, 1227, 1228, 1229, + 1230, 1232, 1233, 1234, 1235, 1236, 1237, 1239, 1239, 1241, + 1243, 1245, 1247, 1248, 1249, 1250, 1252, 1252, 1252, 1252, + 1252, 1252, 1252, 1254, 1256, 1257, 1259, 1260, 1262, 1264, + 1266, 1277, 1278, 1289, 1321, 1330, 1330, 1337, 1337, 1339, + 1339, 1346, 1350, 1355, 1363, 1369, 1373, 1378, 1379, 1381, + 1381, 1383, 1383, 1385, 1386, 1388, 1388, 1394, 1395, 1397, + 1401, 1406, 1412, 1419, 1420, 1421, 1422, 1424, 1425, 1426, + 1432, 1432, 1434, 1436, 1440, 1445, 1455, 1462, 1470, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1490, + 1496, 1496, 1499, 1503 }; #endif @@ -2125,13 +2125,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_statement: /* statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).statement)); } #line 2131 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).statement)); } #line 2137 "bison_parser.cpp" break; @@ -2163,19 +2163,19 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_hint: /* hint */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2169 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } #line 2175 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } #line 2181 "bison_parser.cpp" break; @@ -2187,13 +2187,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } #line 2193 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } #line 2199 "bison_parser.cpp" break; @@ -2211,37 +2211,37 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_import_export_options: /* opt_import_export_options */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } #line 2217 "bison_parser.cpp" break; case YYSYMBOL_import_export_options: /* import_export_options */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } #line 2223 "bison_parser.cpp" break; case YYSYMBOL_csv_option: /* csv_option */ #line 202 "bison_parser.y" - { delete (((*yyvaluep).csv_option_t)); } + { free(((*yyvaluep).csv_option_t)->second); delete (((*yyvaluep).csv_option_t)); } #line 2229 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } #line 2235 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } #line 2241 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } #line 2247 "bison_parser.cpp" break; @@ -2266,13 +2266,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_table_elem: /* table_elem */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } #line 2272 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).column_t)); } #line 2278 "bison_parser.cpp" break; @@ -2290,19 +2290,19 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } #line 2296 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } #line 2302 "bison_parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } #line 2308 "bison_parser.cpp" break; @@ -2314,19 +2314,19 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } #line 2320 "bison_parser.cpp" break; case YYSYMBOL_references_spec: /* references_spec */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).references_spec_t)); } #line 2326 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } #line 2332 "bison_parser.cpp" break; @@ -2338,37 +2338,37 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } #line 2344 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } #line 2350 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } #line 2356 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } #line 2362 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } #line 2368 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } #line 2374 "bison_parser.cpp" break; @@ -2387,7 +2387,7 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_update_statement: /* update_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } #line 2393 "bison_parser.cpp" break; @@ -2406,49 +2406,49 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_update_clause: /* update_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).update_t)); } #line 2412 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2418 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2424 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2430 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2436 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2442 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } #line 2448 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } #line 2454 "bison_parser.cpp" break; @@ -2460,7 +2460,7 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_select_clause: /* select_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2466 "bison_parser.cpp" break; @@ -2485,31 +2485,31 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2491 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2497 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2503 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).group_t)); } #line 2509 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2515 "bison_parser.cpp" break; @@ -2541,7 +2541,7 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_order_desc: /* order_desc */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).order)); } #line 2547 "bison_parser.cpp" break; @@ -2553,13 +2553,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_top: /* opt_top */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).limit)); } #line 2559 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).limit)); } #line 2565 "bison_parser.cpp" break; @@ -2604,97 +2604,97 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_casted_extended_literal: /* casted_extended_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2610 "bison_parser.cpp" break; case YYSYMBOL_extended_literal: /* extended_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2616 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2622 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2628 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2634 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2640 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2646 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2652 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2658 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2664 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2670 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2676 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2682 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2688 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2694 "bison_parser.cpp" break; case YYSYMBOL_opt_window: /* opt_window */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).window_description)); } #line 2700 "bison_parser.cpp" break; @@ -2713,7 +2713,7 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } #line 2719 "bison_parser.cpp" break; @@ -2725,19 +2725,19 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } #line 2731 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2737 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2743 "bison_parser.cpp" break; @@ -2761,97 +2761,97 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_array_expr: /* array_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2767 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2773 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2779 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2785 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2791 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2797 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2803 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2809 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2815 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2821 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2827 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2833 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2839 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2845 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2851 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2857 "bison_parser.cpp" break; @@ -2870,13 +2870,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2876 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2882 "bison_parser.cpp" break; @@ -2897,43 +2897,43 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_table_alias: /* table_alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2903 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2909 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2915 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2921 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } #line 2927 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } #line 2933 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } #line 2939 "bison_parser.cpp" break; @@ -2951,31 +2951,31 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } #line 2957 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } #line 2963 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } #line 2969 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } #line 2975 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2981 "bison_parser.cpp" break; @@ -2987,7 +2987,7 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_join_condition: /* join_condition */ -#line 202 "bison_parser.y" +#line 203 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2993 "bison_parser.cpp" break; @@ -3321,7 +3321,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 337 "bison_parser.y" +#line 338 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3343,7 +3343,7 @@ YYLTYPE yylloc = yyloc_default; break; case 3: /* statement_list: statement */ -#line 356 "bison_parser.y" +#line 357 "bison_parser.y" { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; @@ -3354,7 +3354,7 @@ YYLTYPE yylloc = yyloc_default; break; case 4: /* statement_list: statement_list ';' statement */ -#line 362 "bison_parser.y" +#line 363 "bison_parser.y" { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; @@ -3365,7 +3365,7 @@ YYLTYPE yylloc = yyloc_default; break; case 5: /* statement: prepare_statement opt_hints */ -#line 369 "bison_parser.y" +#line 370 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); @@ -3374,7 +3374,7 @@ YYLTYPE yylloc = yyloc_default; break; case 6: /* statement: preparable_statement opt_hints */ -#line 373 "bison_parser.y" +#line 374 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); @@ -3383,97 +3383,97 @@ YYLTYPE yylloc = yyloc_default; break; case 7: /* statement: show_statement */ -#line 377 "bison_parser.y" +#line 378 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } #line 3389 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 378 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } #line 3395 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 379 "bison_parser.y" +#line 380 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } #line 3401 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 381 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } #line 3407 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 382 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } #line 3413 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 383 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } #line 3419 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 384 "bison_parser.y" +#line 385 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 3425 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 385 "bison_parser.y" +#line 386 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 3431 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 386 "bison_parser.y" +#line 387 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } #line 3437 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 387 "bison_parser.y" +#line 388 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } #line 3443 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 388 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } #line 3449 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 389 "bison_parser.y" +#line 390 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } #line 3455 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 390 "bison_parser.y" +#line 391 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } #line 3461 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 396 "bison_parser.y" +#line 397 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } #line 3467 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 397 "bison_parser.y" +#line 398 "bison_parser.y" { (yyval.expr_vec) = nullptr; } #line 3473 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 399 "bison_parser.y" +#line 400 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); @@ -3482,7 +3482,7 @@ YYLTYPE yylloc = yyloc_default; break; case 23: /* hint_list: hint_list ',' hint */ -#line 403 "bison_parser.y" +#line 404 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); @@ -3491,7 +3491,7 @@ YYLTYPE yylloc = yyloc_default; break; case 24: /* hint: IDENTIFIER */ -#line 408 "bison_parser.y" +#line 409 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); @@ -3500,7 +3500,7 @@ YYLTYPE yylloc = yyloc_default; break; case 25: /* hint: IDENTIFIER '(' extended_literal_list ')' */ -#line 412 "bison_parser.y" +#line 413 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); @@ -3510,25 +3510,25 @@ YYLTYPE yylloc = yyloc_default; break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 422 "bison_parser.y" +#line 423 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } #line 3516 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 423 "bison_parser.y" +#line 424 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } #line 3522 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 424 "bison_parser.y" +#line 425 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } #line 3528 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 432 "bison_parser.y" +#line 433 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); @@ -3538,7 +3538,7 @@ YYLTYPE yylloc = yyloc_default; break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 440 "bison_parser.y" +#line 441 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); @@ -3547,7 +3547,7 @@ YYLTYPE yylloc = yyloc_default; break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_extended_literal_list ')' */ -#line 444 "bison_parser.y" +#line 445 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); @@ -3557,7 +3557,7 @@ YYLTYPE yylloc = yyloc_default; break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 456 "bison_parser.y" +#line 457 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3568,7 +3568,7 @@ YYLTYPE yylloc = yyloc_default; break; case 36: /* import_statement: COPY table_name FROM file_path opt_import_export_options opt_where */ -#line 462 "bison_parser.y" +#line 463 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_export_option_t)->format); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3589,7 +3589,7 @@ YYLTYPE yylloc = yyloc_default; break; case 37: /* file_type: IDENTIFIER */ -#line 479 "bison_parser.y" +#line 480 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3608,31 +3608,31 @@ YYLTYPE yylloc = yyloc_default; break; case 38: /* file_path: STRING */ -#line 494 "bison_parser.y" +#line 495 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } #line 3614 "bison_parser.cpp" break; case 39: /* opt_import_export_options: WITH '(' import_export_options ')' */ -#line 496 "bison_parser.y" +#line 497 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } #line 3620 "bison_parser.cpp" break; case 40: /* opt_import_export_options: '(' import_export_options ')' */ -#line 497 "bison_parser.y" +#line 498 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } #line 3626 "bison_parser.cpp" break; case 41: /* opt_import_export_options: %empty */ -#line 498 "bison_parser.y" +#line 499 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; } #line 3632 "bison_parser.cpp" break; case 42: /* import_export_options: import_export_options ',' FORMAT file_type */ -#line 500 "bison_parser.y" +#line 501 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->format != kImportAuto) { delete (yyvsp[-3].import_export_option_t); @@ -3651,7 +3651,7 @@ YYLTYPE yylloc = yyloc_default; break; case 43: /* import_export_options: FORMAT file_type */ -#line 514 "bison_parser.y" +#line 515 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->format = (yyvsp[0].import_type_t); @@ -3660,7 +3660,7 @@ YYLTYPE yylloc = yyloc_default; break; case 44: /* import_export_options: import_export_options ',' ENCODING STRING */ -#line 518 "bison_parser.y" +#line 519 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->encoding) { delete (yyvsp[-3].import_export_option_t); @@ -3675,7 +3675,7 @@ YYLTYPE yylloc = yyloc_default; break; case 45: /* import_export_options: ENCODING STRING */ -#line 528 "bison_parser.y" +#line 529 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->encoding = (yyvsp[0].sval); @@ -3684,7 +3684,7 @@ YYLTYPE yylloc = yyloc_default; break; case 46: /* import_export_options: import_export_options ',' csv_option */ -#line 532 "bison_parser.y" +#line 533 "bison_parser.y" { if ((yyvsp[-2].import_export_option_t)->format != kImportAuto && (yyvsp[-2].import_export_option_t)->format != kImportCSV) { delete (yyvsp[-2].import_export_option_t); @@ -3698,70 +3698,83 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].import_export_option_t)->csv_options = new CsvOptions{}; } -#define ASSERT_IS_NULLPTR(ptr) \ - if ((ptr) != nullptr) { \ - delete (yyvsp[-2].import_export_option_t); \ - free((yyvsp[0].csv_option_t)->second); \ - delete (yyvsp[0].csv_option_t); \ - yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); \ - YYERROR; \ + bool freed_ptr = false; + auto free_if_necessary = [&](char* ptr) { + if (ptr != nullptr) { + free(ptr); + freed_ptr = true; + } + }; + + switch ((yyvsp[0].csv_option_t)->first) { + case CsvOptionType::Delimiter: + free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->delimiter); + (yyvsp[-2].import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; + break; + case CsvOptionType::Null: + free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->null); + (yyvsp[-2].import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; + break; + case CsvOptionType::Quote: + free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->quote); + (yyvsp[-2].import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; + break; + default: + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); + delete (yyvsp[-2].import_export_option_t); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } + delete (yyvsp[0].csv_option_t); - if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Delimiter) { - ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->delimiter); - (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; - } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Null) { - ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->null); - (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; - } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Quote) { - ASSERT_IS_NULLPTR((yyvsp[-2].import_export_option_t)->csv_options->quote); - (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; - } else { + if (freed_ptr) { delete (yyvsp[-2].import_export_option_t); - free((yyvsp[0].csv_option_t)->second); - delete (yyvsp[0].csv_option_t); - yyerror(&yyloc, result, scanner, "Unknown CSV option."); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); YYERROR; } - delete (yyvsp[0].csv_option_t); (yyval.import_export_option_t) = (yyvsp[-2].import_export_option_t); } -#line 3731 "bison_parser.cpp" +#line 3740 "bison_parser.cpp" break; case 47: /* import_export_options: csv_option */ -#line 574 "bison_parser.y" +#line 584 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->csv_options = new CsvOptions{}; - if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Delimiter) { - (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; - } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Null) { - (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; - } else if ((yyvsp[0].csv_option_t)->first == hsql::CsvOptionType::Quote) { - (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; - } else { - free((yyvsp[0].csv_option_t)->second); - delete (yyvsp[0].csv_option_t); - delete (yyval.import_export_option_t); - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; + switch ((yyvsp[0].csv_option_t)->first) { + case CsvOptionType::Delimiter: + (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; + break; + case CsvOptionType::Null: + (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; + break; + case CsvOptionType::Quote: + (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; + break; + default: + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); + delete (yyval.import_export_option_t); + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } delete (yyvsp[0].csv_option_t); } -#line 3756 "bison_parser.cpp" +#line 3769 "bison_parser.cpp" break; case 48: /* csv_option: IDENTIFIER STRING */ -#line 595 "bison_parser.y" +#line 609 "bison_parser.y" { if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { - (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Delimiter, (yyvsp[0].sval)); + (yyval.csv_option_t) = new std::pair(CsvOptionType::Delimiter, (yyvsp[0].sval)); } else if (strcasecmp((yyvsp[-1].sval), "QUOTE") == 0) { - (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Quote, (yyvsp[0].sval)); + (yyval.csv_option_t) = new std::pair(CsvOptionType::Quote, (yyvsp[0].sval)); } else { free((yyvsp[-1].sval)); free((yyvsp[0].sval)); @@ -3770,17 +3783,17 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[-1].sval)); } -#line 3774 "bison_parser.cpp" +#line 3787 "bison_parser.cpp" break; case 49: /* csv_option: NULL STRING */ -#line 608 "bison_parser.y" - { (yyval.csv_option_t) = new std::pair(hsql::CsvOptionType::Null, (yyvsp[0].sval)); } -#line 3780 "bison_parser.cpp" +#line 622 "bison_parser.y" + { (yyval.csv_option_t) = new std::pair(CsvOptionType::Null, (yyvsp[0].sval)); } +#line 3793 "bison_parser.cpp" break; case 50: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 615 "bison_parser.y" +#line 629 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3796,11 +3809,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3800 "bison_parser.cpp" +#line 3813 "bison_parser.cpp" break; case 51: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 630 "bison_parser.y" +#line 644 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3815,37 +3828,37 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3819 "bison_parser.cpp" +#line 3832 "bison_parser.cpp" break; case 52: /* show_statement: SHOW TABLES */ -#line 650 "bison_parser.y" +#line 664 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3825 "bison_parser.cpp" +#line 3838 "bison_parser.cpp" break; case 53: /* show_statement: SHOW COLUMNS table_name */ -#line 651 "bison_parser.y" +#line 665 "bison_parser.y" { (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 3835 "bison_parser.cpp" +#line 3848 "bison_parser.cpp" break; case 54: /* show_statement: DESCRIBE table_name */ -#line 656 "bison_parser.y" +#line 670 "bison_parser.y" { (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 3845 "bison_parser.cpp" +#line 3858 "bison_parser.cpp" break; case 55: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 667 "bison_parser.y" +#line 681 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3859,11 +3872,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3863 "bison_parser.cpp" +#line 3876 "bison_parser.cpp" break; case 56: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 680 "bison_parser.y" +#line 694 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3876,11 +3889,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3880 "bison_parser.cpp" +#line 3893 "bison_parser.cpp" break; case 57: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 692 "bison_parser.y" +#line 706 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3888,11 +3901,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3892 "bison_parser.cpp" +#line 3905 "bison_parser.cpp" break; case 58: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 699 "bison_parser.y" +#line 713 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3900,11 +3913,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3904 "bison_parser.cpp" +#line 3917 "bison_parser.cpp" break; case 59: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 706 "bison_parser.y" +#line 720 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3913,53 +3926,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3917 "bison_parser.cpp" +#line 3930 "bison_parser.cpp" break; case 60: /* opt_not_exists: IF NOT EXISTS */ -#line 715 "bison_parser.y" +#line 729 "bison_parser.y" { (yyval.bval) = true; } -#line 3923 "bison_parser.cpp" +#line 3936 "bison_parser.cpp" break; case 61: /* opt_not_exists: %empty */ -#line 716 "bison_parser.y" +#line 730 "bison_parser.y" { (yyval.bval) = false; } -#line 3929 "bison_parser.cpp" +#line 3942 "bison_parser.cpp" break; case 62: /* table_elem_commalist: table_elem */ -#line 718 "bison_parser.y" +#line 732 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3938 "bison_parser.cpp" +#line 3951 "bison_parser.cpp" break; case 63: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 722 "bison_parser.y" +#line 736 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3947 "bison_parser.cpp" +#line 3960 "bison_parser.cpp" break; case 64: /* table_elem: column_def */ -#line 727 "bison_parser.y" +#line 741 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3953 "bison_parser.cpp" +#line 3966 "bison_parser.cpp" break; case 65: /* table_elem: table_constraint */ -#line 728 "bison_parser.y" +#line 742 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3959 "bison_parser.cpp" +#line 3972 "bison_parser.cpp" break; case 66: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 730 "bison_parser.y" +#line 744 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3967,192 +3980,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3971 "bison_parser.cpp" +#line 3984 "bison_parser.cpp" break; case 67: /* column_type: BIGINT */ -#line 738 "bison_parser.y" +#line 752 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3977 "bison_parser.cpp" +#line 3990 "bison_parser.cpp" break; case 68: /* column_type: BOOLEAN */ -#line 739 "bison_parser.y" +#line 753 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3983 "bison_parser.cpp" +#line 3996 "bison_parser.cpp" break; case 69: /* column_type: CHAR '(' INTVAL ')' */ -#line 740 "bison_parser.y" +#line 754 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3989 "bison_parser.cpp" +#line 4002 "bison_parser.cpp" break; case 70: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 741 "bison_parser.y" +#line 755 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3995 "bison_parser.cpp" +#line 4008 "bison_parser.cpp" break; case 71: /* column_type: DATE */ -#line 742 "bison_parser.y" +#line 756 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 4001 "bison_parser.cpp" +#line 4014 "bison_parser.cpp" break; case 72: /* column_type: DATETIME */ -#line 743 "bison_parser.y" +#line 757 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4007 "bison_parser.cpp" +#line 4020 "bison_parser.cpp" break; case 73: /* column_type: DECIMAL opt_decimal_specification */ -#line 744 "bison_parser.y" +#line 758 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 4016 "bison_parser.cpp" +#line 4029 "bison_parser.cpp" break; case 74: /* column_type: DOUBLE */ -#line 748 "bison_parser.y" +#line 762 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 4022 "bison_parser.cpp" +#line 4035 "bison_parser.cpp" break; case 75: /* column_type: FLOAT */ -#line 749 "bison_parser.y" +#line 763 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 4028 "bison_parser.cpp" +#line 4041 "bison_parser.cpp" break; case 76: /* column_type: INT */ -#line 750 "bison_parser.y" +#line 764 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4034 "bison_parser.cpp" +#line 4047 "bison_parser.cpp" break; case 77: /* column_type: INTEGER */ -#line 751 "bison_parser.y" +#line 765 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4040 "bison_parser.cpp" +#line 4053 "bison_parser.cpp" break; case 78: /* column_type: LONG */ -#line 752 "bison_parser.y" +#line 766 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 4046 "bison_parser.cpp" +#line 4059 "bison_parser.cpp" break; case 79: /* column_type: REAL */ -#line 753 "bison_parser.y" +#line 767 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 4052 "bison_parser.cpp" +#line 4065 "bison_parser.cpp" break; case 80: /* column_type: SMALLINT */ -#line 754 "bison_parser.y" +#line 768 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 4058 "bison_parser.cpp" +#line 4071 "bison_parser.cpp" break; case 81: /* column_type: TEXT */ -#line 755 "bison_parser.y" +#line 769 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 4064 "bison_parser.cpp" +#line 4077 "bison_parser.cpp" break; case 82: /* column_type: TIME opt_time_precision */ -#line 756 "bison_parser.y" +#line 770 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 4070 "bison_parser.cpp" +#line 4083 "bison_parser.cpp" break; case 83: /* column_type: TIMESTAMP */ -#line 757 "bison_parser.y" +#line 771 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4076 "bison_parser.cpp" +#line 4089 "bison_parser.cpp" break; case 84: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 758 "bison_parser.y" +#line 772 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4082 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; case 85: /* opt_time_precision: '(' INTVAL ')' */ -#line 760 "bison_parser.y" +#line 774 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 4088 "bison_parser.cpp" +#line 4101 "bison_parser.cpp" break; case 86: /* opt_time_precision: %empty */ -#line 761 "bison_parser.y" +#line 775 "bison_parser.y" { (yyval.ival) = 0; } -#line 4094 "bison_parser.cpp" +#line 4107 "bison_parser.cpp" break; case 87: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 763 "bison_parser.y" +#line 777 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 4100 "bison_parser.cpp" +#line 4113 "bison_parser.cpp" break; case 88: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 764 "bison_parser.y" +#line 778 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 4106 "bison_parser.cpp" +#line 4119 "bison_parser.cpp" break; case 89: /* opt_decimal_specification: %empty */ -#line 765 "bison_parser.y" +#line 779 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 4112 "bison_parser.cpp" +#line 4125 "bison_parser.cpp" break; case 90: /* opt_column_constraints: column_constraints */ -#line 767 "bison_parser.y" +#line 781 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4118 "bison_parser.cpp" +#line 4131 "bison_parser.cpp" break; case 91: /* opt_column_constraints: %empty */ -#line 768 "bison_parser.y" +#line 782 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4124 "bison_parser.cpp" +#line 4137 "bison_parser.cpp" break; case 92: /* column_constraints: column_constraint */ -#line 770 "bison_parser.y" +#line 784 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4133 "bison_parser.cpp" +#line 4146 "bison_parser.cpp" break; case 93: /* column_constraints: column_constraints column_constraint */ -#line 774 "bison_parser.y" +#line 788 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4142 "bison_parser.cpp" +#line 4155 "bison_parser.cpp" break; case 94: /* column_constraints: references_spec */ -#line 778 "bison_parser.y" +#line 792 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4152 "bison_parser.cpp" +#line 4165 "bison_parser.cpp" break; case 95: /* column_constraints: column_constraints references_spec */ -#line 783 "bison_parser.y" +#line 797 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4160,159 +4173,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4164 "bison_parser.cpp" +#line 4177 "bison_parser.cpp" break; case 96: /* column_constraint: PRIMARY KEY */ -#line 791 "bison_parser.y" +#line 805 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4170 "bison_parser.cpp" +#line 4183 "bison_parser.cpp" break; case 97: /* column_constraint: UNIQUE */ -#line 792 "bison_parser.y" +#line 806 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4176 "bison_parser.cpp" +#line 4189 "bison_parser.cpp" break; case 98: /* column_constraint: NULL */ -#line 793 "bison_parser.y" +#line 807 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4182 "bison_parser.cpp" +#line 4195 "bison_parser.cpp" break; case 99: /* column_constraint: NOT NULL */ -#line 794 "bison_parser.y" +#line 808 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4188 "bison_parser.cpp" +#line 4201 "bison_parser.cpp" break; case 100: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 796 "bison_parser.y" +#line 810 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4194 "bison_parser.cpp" +#line 4207 "bison_parser.cpp" break; case 101: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 797 "bison_parser.y" +#line 811 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4200 "bison_parser.cpp" +#line 4213 "bison_parser.cpp" break; case 102: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 798 "bison_parser.y" +#line 812 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4206 "bison_parser.cpp" +#line 4219 "bison_parser.cpp" break; case 103: /* references_spec: REFERENCES table_name opt_column_list */ -#line 800 "bison_parser.y" +#line 814 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4212 "bison_parser.cpp" +#line 4225 "bison_parser.cpp" break; case 104: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 808 "bison_parser.y" +#line 822 "bison_parser.y" { (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 4223 "bison_parser.cpp" +#line 4236 "bison_parser.cpp" break; case 105: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 814 "bison_parser.y" +#line 828 "bison_parser.y" { (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 4234 "bison_parser.cpp" +#line 4247 "bison_parser.cpp" break; case 106: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 820 "bison_parser.y" +#line 834 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4244 "bison_parser.cpp" +#line 4257 "bison_parser.cpp" break; case 107: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 826 "bison_parser.y" +#line 840 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4254 "bison_parser.cpp" +#line 4267 "bison_parser.cpp" break; case 108: /* opt_exists: IF EXISTS */ -#line 832 "bison_parser.y" +#line 846 "bison_parser.y" { (yyval.bval) = true; } -#line 4260 "bison_parser.cpp" +#line 4273 "bison_parser.cpp" break; case 109: /* opt_exists: %empty */ -#line 833 "bison_parser.y" +#line 847 "bison_parser.y" { (yyval.bval) = false; } -#line 4266 "bison_parser.cpp" +#line 4279 "bison_parser.cpp" break; case 110: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 840 "bison_parser.y" +#line 854 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4276 "bison_parser.cpp" +#line 4289 "bison_parser.cpp" break; case 111: /* alter_action: drop_action */ -#line 846 "bison_parser.y" +#line 860 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4282 "bison_parser.cpp" +#line 4295 "bison_parser.cpp" break; case 112: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 848 "bison_parser.y" +#line 862 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4291 "bison_parser.cpp" +#line 4304 "bison_parser.cpp" break; case 113: /* delete_statement: DELETE FROM table_name opt_where */ -#line 858 "bison_parser.y" +#line 872 "bison_parser.y" { (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 4302 "bison_parser.cpp" +#line 4315 "bison_parser.cpp" break; case 114: /* truncate_statement: TRUNCATE table_name */ -#line 865 "bison_parser.y" +#line 879 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4312 "bison_parser.cpp" +#line 4325 "bison_parser.cpp" break; case 115: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 876 "bison_parser.y" +#line 890 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4320,11 +4333,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4324 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; case 116: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 883 "bison_parser.y" +#line 897 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4332,80 +4345,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4336 "bison_parser.cpp" +#line 4349 "bison_parser.cpp" break; case 117: /* opt_column_list: '(' ident_commalist ')' */ -#line 891 "bison_parser.y" +#line 905 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4342 "bison_parser.cpp" +#line 4355 "bison_parser.cpp" break; case 118: /* opt_column_list: %empty */ -#line 892 "bison_parser.y" +#line 906 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4348 "bison_parser.cpp" +#line 4361 "bison_parser.cpp" break; case 119: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 899 "bison_parser.y" +#line 913 "bison_parser.y" { (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 4359 "bison_parser.cpp" +#line 4372 "bison_parser.cpp" break; case 120: /* update_clause_commalist: update_clause */ -#line 906 "bison_parser.y" +#line 920 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4368 "bison_parser.cpp" +#line 4381 "bison_parser.cpp" break; case 121: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 910 "bison_parser.y" +#line 924 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4377 "bison_parser.cpp" +#line 4390 "bison_parser.cpp" break; case 122: /* update_clause: IDENTIFIER '=' expr */ -#line 915 "bison_parser.y" +#line 929 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4387 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; case 123: /* select_statement: opt_with_clause select_with_paren */ -#line 925 "bison_parser.y" +#line 939 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4396 "bison_parser.cpp" +#line 4409 "bison_parser.cpp" break; case 124: /* select_statement: opt_with_clause select_no_paren */ -#line 929 "bison_parser.y" +#line 943 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4405 "bison_parser.cpp" +#line 4418 "bison_parser.cpp" break; case 125: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 933 "bison_parser.y" +#line 947 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4417,17 +4430,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4421 "bison_parser.cpp" +#line 4434 "bison_parser.cpp" break; case 128: /* select_within_set_operation_no_parentheses: select_clause */ -#line 947 "bison_parser.y" +#line 961 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4427 "bison_parser.cpp" +#line 4440 "bison_parser.cpp" break; case 129: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 948 "bison_parser.y" +#line 962 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4436,23 +4449,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4440 "bison_parser.cpp" +#line 4453 "bison_parser.cpp" break; case 130: /* select_with_paren: '(' select_no_paren ')' */ -#line 957 "bison_parser.y" +#line 971 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4446 "bison_parser.cpp" +#line 4459 "bison_parser.cpp" break; case 131: /* select_with_paren: '(' select_with_paren ')' */ -#line 958 "bison_parser.y" +#line 972 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4452 "bison_parser.cpp" +#line 4465 "bison_parser.cpp" break; case 132: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 960 "bison_parser.y" +#line 974 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4467,11 +4480,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4471 "bison_parser.cpp" +#line 4484 "bison_parser.cpp" break; case 133: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 974 "bison_parser.y" +#line 988 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4483,59 +4496,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4487 "bison_parser.cpp" +#line 4500 "bison_parser.cpp" break; case 134: /* set_operator: set_type opt_all */ -#line 986 "bison_parser.y" +#line 1000 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4496 "bison_parser.cpp" +#line 4509 "bison_parser.cpp" break; case 135: /* set_type: UNION */ -#line 991 "bison_parser.y" +#line 1005 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4505 "bison_parser.cpp" +#line 4518 "bison_parser.cpp" break; case 136: /* set_type: INTERSECT */ -#line 995 "bison_parser.y" +#line 1009 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4514 "bison_parser.cpp" +#line 4527 "bison_parser.cpp" break; case 137: /* set_type: EXCEPT */ -#line 999 "bison_parser.y" +#line 1013 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4523 "bison_parser.cpp" +#line 4536 "bison_parser.cpp" break; case 138: /* opt_all: ALL */ -#line 1004 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.bval) = true; } -#line 4529 "bison_parser.cpp" +#line 4542 "bison_parser.cpp" break; case 139: /* opt_all: %empty */ -#line 1005 "bison_parser.y" +#line 1019 "bison_parser.y" { (yyval.bval) = false; } -#line 4535 "bison_parser.cpp" +#line 4548 "bison_parser.cpp" break; case 140: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 1007 "bison_parser.y" +#line 1021 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4545,239 +4558,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4549 "bison_parser.cpp" +#line 4562 "bison_parser.cpp" break; case 141: /* opt_distinct: DISTINCT */ -#line 1017 "bison_parser.y" +#line 1031 "bison_parser.y" { (yyval.bval) = true; } -#line 4555 "bison_parser.cpp" +#line 4568 "bison_parser.cpp" break; case 142: /* opt_distinct: %empty */ -#line 1018 "bison_parser.y" +#line 1032 "bison_parser.y" { (yyval.bval) = false; } -#line 4561 "bison_parser.cpp" +#line 4574 "bison_parser.cpp" break; case 144: /* opt_from_clause: from_clause */ -#line 1022 "bison_parser.y" +#line 1036 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4567 "bison_parser.cpp" +#line 4580 "bison_parser.cpp" break; case 145: /* opt_from_clause: %empty */ -#line 1023 "bison_parser.y" +#line 1037 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4573 "bison_parser.cpp" +#line 4586 "bison_parser.cpp" break; case 146: /* from_clause: FROM table_ref */ -#line 1025 "bison_parser.y" +#line 1039 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4579 "bison_parser.cpp" +#line 4592 "bison_parser.cpp" break; case 147: /* opt_where: WHERE expr */ -#line 1027 "bison_parser.y" +#line 1041 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4585 "bison_parser.cpp" +#line 4598 "bison_parser.cpp" break; case 148: /* opt_where: %empty */ -#line 1028 "bison_parser.y" +#line 1042 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4591 "bison_parser.cpp" +#line 4604 "bison_parser.cpp" break; case 149: /* opt_group: GROUP BY expr_list opt_having */ -#line 1030 "bison_parser.y" +#line 1044 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4601 "bison_parser.cpp" +#line 4614 "bison_parser.cpp" break; case 150: /* opt_group: %empty */ -#line 1035 "bison_parser.y" +#line 1049 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4607 "bison_parser.cpp" +#line 4620 "bison_parser.cpp" break; case 151: /* opt_having: HAVING expr */ -#line 1037 "bison_parser.y" +#line 1051 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4613 "bison_parser.cpp" +#line 4626 "bison_parser.cpp" break; case 152: /* opt_having: %empty */ -#line 1038 "bison_parser.y" +#line 1052 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4619 "bison_parser.cpp" +#line 4632 "bison_parser.cpp" break; case 153: /* opt_order: ORDER BY order_list */ -#line 1040 "bison_parser.y" +#line 1054 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4625 "bison_parser.cpp" +#line 4638 "bison_parser.cpp" break; case 154: /* opt_order: %empty */ -#line 1041 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4631 "bison_parser.cpp" +#line 4644 "bison_parser.cpp" break; case 155: /* order_list: order_desc */ -#line 1043 "bison_parser.y" +#line 1057 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4640 "bison_parser.cpp" +#line 4653 "bison_parser.cpp" break; case 156: /* order_list: order_list ',' order_desc */ -#line 1047 "bison_parser.y" +#line 1061 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4649 "bison_parser.cpp" +#line 4662 "bison_parser.cpp" break; case 157: /* order_desc: expr opt_order_type */ -#line 1052 "bison_parser.y" +#line 1066 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4655 "bison_parser.cpp" +#line 4668 "bison_parser.cpp" break; case 158: /* opt_order_type: ASC */ -#line 1054 "bison_parser.y" +#line 1068 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4661 "bison_parser.cpp" +#line 4674 "bison_parser.cpp" break; case 159: /* opt_order_type: DESC */ -#line 1055 "bison_parser.y" +#line 1069 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4667 "bison_parser.cpp" +#line 4680 "bison_parser.cpp" break; case 160: /* opt_order_type: %empty */ -#line 1056 "bison_parser.y" +#line 1070 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4673 "bison_parser.cpp" +#line 4686 "bison_parser.cpp" break; case 161: /* opt_top: TOP int_literal */ -#line 1060 "bison_parser.y" +#line 1074 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4679 "bison_parser.cpp" +#line 4692 "bison_parser.cpp" break; case 162: /* opt_top: %empty */ -#line 1061 "bison_parser.y" +#line 1075 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4685 "bison_parser.cpp" +#line 4698 "bison_parser.cpp" break; case 163: /* opt_limit: LIMIT expr */ -#line 1063 "bison_parser.y" +#line 1077 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4691 "bison_parser.cpp" +#line 4704 "bison_parser.cpp" break; case 164: /* opt_limit: OFFSET expr */ -#line 1064 "bison_parser.y" +#line 1078 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4697 "bison_parser.cpp" +#line 4710 "bison_parser.cpp" break; case 165: /* opt_limit: LIMIT expr OFFSET expr */ -#line 1065 "bison_parser.y" +#line 1079 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4703 "bison_parser.cpp" +#line 4716 "bison_parser.cpp" break; case 166: /* opt_limit: LIMIT ALL */ -#line 1066 "bison_parser.y" +#line 1080 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4709 "bison_parser.cpp" +#line 4722 "bison_parser.cpp" break; case 167: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 1067 "bison_parser.y" +#line 1081 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4715 "bison_parser.cpp" +#line 4728 "bison_parser.cpp" break; case 168: /* opt_limit: %empty */ -#line 1068 "bison_parser.y" +#line 1082 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4721 "bison_parser.cpp" +#line 4734 "bison_parser.cpp" break; case 169: /* expr_list: expr_alias */ -#line 1073 "bison_parser.y" +#line 1087 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4730 "bison_parser.cpp" +#line 4743 "bison_parser.cpp" break; case 170: /* expr_list: expr_list ',' expr_alias */ -#line 1077 "bison_parser.y" +#line 1091 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4739 "bison_parser.cpp" +#line 4752 "bison_parser.cpp" break; case 171: /* opt_extended_literal_list: extended_literal_list */ -#line 1083 "bison_parser.y" +#line 1097 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4745 "bison_parser.cpp" +#line 4758 "bison_parser.cpp" break; case 172: /* opt_extended_literal_list: %empty */ -#line 1084 "bison_parser.y" +#line 1098 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4751 "bison_parser.cpp" +#line 4764 "bison_parser.cpp" break; case 173: /* extended_literal_list: casted_extended_literal */ -#line 1086 "bison_parser.y" +#line 1100 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4760 "bison_parser.cpp" +#line 4773 "bison_parser.cpp" break; case 174: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 1090 "bison_parser.y" +#line 1104 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4769 "bison_parser.cpp" +#line 4782 "bison_parser.cpp" break; case 176: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 1095 "bison_parser.y" +#line 1109 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4777 "bison_parser.cpp" +#line 4790 "bison_parser.cpp" break; case 177: /* extended_literal: literal */ -#line 1099 "bison_parser.y" +#line 1113 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4786,23 +4799,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4790 "bison_parser.cpp" +#line 4803 "bison_parser.cpp" break; case 178: /* extended_literal: '-' num_literal */ -#line 1107 "bison_parser.y" +#line 1121 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4796 "bison_parser.cpp" +#line 4809 "bison_parser.cpp" break; case 179: /* extended_literal: '-' interval_literal */ -#line 1108 "bison_parser.y" +#line 1122 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4802 "bison_parser.cpp" +#line 4815 "bison_parser.cpp" break; case 180: /* expr_alias: expr opt_alias */ -#line 1110 "bison_parser.y" +#line 1124 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4811,507 +4824,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4815 "bison_parser.cpp" +#line 4828 "bison_parser.cpp" break; case 186: /* operand: '(' expr ')' */ -#line 1121 "bison_parser.y" +#line 1135 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4821 "bison_parser.cpp" +#line 4834 "bison_parser.cpp" break; case 196: /* operand: '(' select_no_paren ')' */ -#line 1123 "bison_parser.y" +#line 1137 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4829 "bison_parser.cpp" +#line 4842 "bison_parser.cpp" break; case 199: /* unary_expr: '-' operand */ -#line 1129 "bison_parser.y" +#line 1143 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4835 "bison_parser.cpp" +#line 4848 "bison_parser.cpp" break; case 200: /* unary_expr: NOT operand */ -#line 1130 "bison_parser.y" +#line 1144 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4841 "bison_parser.cpp" +#line 4854 "bison_parser.cpp" break; case 201: /* unary_expr: operand ISNULL */ -#line 1131 "bison_parser.y" +#line 1145 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4847 "bison_parser.cpp" +#line 4860 "bison_parser.cpp" break; case 202: /* unary_expr: operand IS NULL */ -#line 1132 "bison_parser.y" +#line 1146 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4853 "bison_parser.cpp" +#line 4866 "bison_parser.cpp" break; case 203: /* unary_expr: operand IS NOT NULL */ -#line 1133 "bison_parser.y" +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4859 "bison_parser.cpp" +#line 4872 "bison_parser.cpp" break; case 205: /* binary_expr: operand '-' operand */ -#line 1135 "bison_parser.y" +#line 1149 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4865 "bison_parser.cpp" +#line 4878 "bison_parser.cpp" break; case 206: /* binary_expr: operand '+' operand */ -#line 1136 "bison_parser.y" +#line 1150 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4871 "bison_parser.cpp" +#line 4884 "bison_parser.cpp" break; case 207: /* binary_expr: operand '/' operand */ -#line 1137 "bison_parser.y" +#line 1151 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4877 "bison_parser.cpp" +#line 4890 "bison_parser.cpp" break; case 208: /* binary_expr: operand '*' operand */ -#line 1138 "bison_parser.y" +#line 1152 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4883 "bison_parser.cpp" +#line 4896 "bison_parser.cpp" break; case 209: /* binary_expr: operand '%' operand */ -#line 1139 "bison_parser.y" +#line 1153 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4889 "bison_parser.cpp" +#line 4902 "bison_parser.cpp" break; case 210: /* binary_expr: operand '^' operand */ -#line 1140 "bison_parser.y" +#line 1154 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4895 "bison_parser.cpp" +#line 4908 "bison_parser.cpp" break; case 211: /* binary_expr: operand LIKE operand */ -#line 1141 "bison_parser.y" +#line 1155 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4901 "bison_parser.cpp" +#line 4914 "bison_parser.cpp" break; case 212: /* binary_expr: operand NOT LIKE operand */ -#line 1142 "bison_parser.y" +#line 1156 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4907 "bison_parser.cpp" +#line 4920 "bison_parser.cpp" break; case 213: /* binary_expr: operand ILIKE operand */ -#line 1143 "bison_parser.y" +#line 1157 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4913 "bison_parser.cpp" +#line 4926 "bison_parser.cpp" break; case 214: /* binary_expr: operand CONCAT operand */ -#line 1144 "bison_parser.y" +#line 1158 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4919 "bison_parser.cpp" +#line 4932 "bison_parser.cpp" break; case 215: /* logic_expr: expr AND expr */ -#line 1146 "bison_parser.y" +#line 1160 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4925 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; case 216: /* logic_expr: expr OR expr */ -#line 1147 "bison_parser.y" +#line 1161 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4931 "bison_parser.cpp" +#line 4944 "bison_parser.cpp" break; case 217: /* in_expr: operand IN '(' expr_list ')' */ -#line 1149 "bison_parser.y" +#line 1163 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4937 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; case 218: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1150 "bison_parser.y" +#line 1164 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4943 "bison_parser.cpp" +#line 4956 "bison_parser.cpp" break; case 219: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1151 "bison_parser.y" +#line 1165 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4949 "bison_parser.cpp" +#line 4962 "bison_parser.cpp" break; case 220: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1152 "bison_parser.y" +#line 1166 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4955 "bison_parser.cpp" +#line 4968 "bison_parser.cpp" break; case 221: /* case_expr: CASE expr case_list END */ -#line 1156 "bison_parser.y" +#line 1170 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4961 "bison_parser.cpp" +#line 4974 "bison_parser.cpp" break; case 222: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1157 "bison_parser.y" +#line 1171 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4967 "bison_parser.cpp" +#line 4980 "bison_parser.cpp" break; case 223: /* case_expr: CASE case_list END */ -#line 1158 "bison_parser.y" +#line 1172 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4973 "bison_parser.cpp" +#line 4986 "bison_parser.cpp" break; case 224: /* case_expr: CASE case_list ELSE expr END */ -#line 1159 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4979 "bison_parser.cpp" +#line 4992 "bison_parser.cpp" break; case 225: /* case_list: WHEN expr THEN expr */ -#line 1161 "bison_parser.y" +#line 1175 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4985 "bison_parser.cpp" +#line 4998 "bison_parser.cpp" break; case 226: /* case_list: case_list WHEN expr THEN expr */ -#line 1162 "bison_parser.y" +#line 1176 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4991 "bison_parser.cpp" +#line 5004 "bison_parser.cpp" break; case 227: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1164 "bison_parser.y" +#line 1178 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4997 "bison_parser.cpp" +#line 5010 "bison_parser.cpp" break; case 228: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1165 "bison_parser.y" +#line 1179 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 5003 "bison_parser.cpp" +#line 5016 "bison_parser.cpp" break; case 229: /* comp_expr: operand '=' operand */ -#line 1167 "bison_parser.y" +#line 1181 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5009 "bison_parser.cpp" +#line 5022 "bison_parser.cpp" break; case 230: /* comp_expr: operand EQUALS operand */ -#line 1168 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5015 "bison_parser.cpp" +#line 5028 "bison_parser.cpp" break; case 231: /* comp_expr: operand NOTEQUALS operand */ -#line 1169 "bison_parser.y" +#line 1183 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 5021 "bison_parser.cpp" +#line 5034 "bison_parser.cpp" break; case 232: /* comp_expr: operand '<' operand */ -#line 1170 "bison_parser.y" +#line 1184 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 5027 "bison_parser.cpp" +#line 5040 "bison_parser.cpp" break; case 233: /* comp_expr: operand '>' operand */ -#line 1171 "bison_parser.y" +#line 1185 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 5033 "bison_parser.cpp" +#line 5046 "bison_parser.cpp" break; case 234: /* comp_expr: operand LESSEQ operand */ -#line 1172 "bison_parser.y" +#line 1186 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 5039 "bison_parser.cpp" +#line 5052 "bison_parser.cpp" break; case 235: /* comp_expr: operand GREATEREQ operand */ -#line 1173 "bison_parser.y" +#line 1187 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 5045 "bison_parser.cpp" +#line 5058 "bison_parser.cpp" break; case 236: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1177 "bison_parser.y" +#line 1191 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 5051 "bison_parser.cpp" +#line 5064 "bison_parser.cpp" break; case 237: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1178 "bison_parser.y" +#line 1192 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 5057 "bison_parser.cpp" +#line 5070 "bison_parser.cpp" break; case 238: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1182 "bison_parser.y" +#line 1196 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 5063 "bison_parser.cpp" +#line 5076 "bison_parser.cpp" break; case 239: /* opt_window: %empty */ -#line 1183 "bison_parser.y" +#line 1197 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 5069 "bison_parser.cpp" +#line 5082 "bison_parser.cpp" break; case 240: /* opt_partition: PARTITION BY expr_list */ -#line 1185 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 5075 "bison_parser.cpp" +#line 5088 "bison_parser.cpp" break; case 241: /* opt_partition: %empty */ -#line 1186 "bison_parser.y" +#line 1200 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 5081 "bison_parser.cpp" +#line 5094 "bison_parser.cpp" break; case 242: /* opt_frame_clause: frame_type frame_bound */ -#line 1191 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 5087 "bison_parser.cpp" +#line 5100 "bison_parser.cpp" break; case 243: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1192 "bison_parser.y" +#line 1206 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 5093 "bison_parser.cpp" +#line 5106 "bison_parser.cpp" break; case 244: /* opt_frame_clause: %empty */ -#line 1193 "bison_parser.y" +#line 1207 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 5101 "bison_parser.cpp" +#line 5114 "bison_parser.cpp" break; case 245: /* frame_type: RANGE */ -#line 1197 "bison_parser.y" +#line 1211 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 5107 "bison_parser.cpp" +#line 5120 "bison_parser.cpp" break; case 246: /* frame_type: ROWS */ -#line 1198 "bison_parser.y" +#line 1212 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 5113 "bison_parser.cpp" +#line 5126 "bison_parser.cpp" break; case 247: /* frame_type: GROUPS */ -#line 1199 "bison_parser.y" +#line 1213 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5119 "bison_parser.cpp" +#line 5132 "bison_parser.cpp" break; case 248: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1201 "bison_parser.y" +#line 1215 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5125 "bison_parser.cpp" +#line 5138 "bison_parser.cpp" break; case 249: /* frame_bound: INTVAL PRECEDING */ -#line 1202 "bison_parser.y" +#line 1216 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5131 "bison_parser.cpp" +#line 5144 "bison_parser.cpp" break; case 250: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1203 "bison_parser.y" +#line 1217 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5137 "bison_parser.cpp" +#line 5150 "bison_parser.cpp" break; case 251: /* frame_bound: INTVAL FOLLOWING */ -#line 1204 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5143 "bison_parser.cpp" +#line 5156 "bison_parser.cpp" break; case 252: /* frame_bound: CURRENT_ROW */ -#line 1205 "bison_parser.y" +#line 1219 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5149 "bison_parser.cpp" +#line 5162 "bison_parser.cpp" break; case 253: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1207 "bison_parser.y" +#line 1221 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5155 "bison_parser.cpp" +#line 5168 "bison_parser.cpp" break; case 254: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1209 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5161 "bison_parser.cpp" +#line 5174 "bison_parser.cpp" break; case 255: /* datetime_field: SECOND */ -#line 1211 "bison_parser.y" +#line 1225 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5167 "bison_parser.cpp" +#line 5180 "bison_parser.cpp" break; case 256: /* datetime_field: MINUTE */ -#line 1212 "bison_parser.y" +#line 1226 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5173 "bison_parser.cpp" +#line 5186 "bison_parser.cpp" break; case 257: /* datetime_field: HOUR */ -#line 1213 "bison_parser.y" +#line 1227 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5179 "bison_parser.cpp" +#line 5192 "bison_parser.cpp" break; case 258: /* datetime_field: DAY */ -#line 1214 "bison_parser.y" +#line 1228 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5185 "bison_parser.cpp" +#line 5198 "bison_parser.cpp" break; case 259: /* datetime_field: MONTH */ -#line 1215 "bison_parser.y" +#line 1229 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5191 "bison_parser.cpp" +#line 5204 "bison_parser.cpp" break; case 260: /* datetime_field: YEAR */ -#line 1216 "bison_parser.y" +#line 1230 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5197 "bison_parser.cpp" +#line 5210 "bison_parser.cpp" break; case 261: /* datetime_field_plural: SECONDS */ -#line 1218 "bison_parser.y" +#line 1232 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5203 "bison_parser.cpp" +#line 5216 "bison_parser.cpp" break; case 262: /* datetime_field_plural: MINUTES */ -#line 1219 "bison_parser.y" +#line 1233 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5209 "bison_parser.cpp" +#line 5222 "bison_parser.cpp" break; case 263: /* datetime_field_plural: HOURS */ -#line 1220 "bison_parser.y" +#line 1234 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5215 "bison_parser.cpp" +#line 5228 "bison_parser.cpp" break; case 264: /* datetime_field_plural: DAYS */ -#line 1221 "bison_parser.y" +#line 1235 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5221 "bison_parser.cpp" +#line 5234 "bison_parser.cpp" break; case 265: /* datetime_field_plural: MONTHS */ -#line 1222 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5227 "bison_parser.cpp" +#line 5240 "bison_parser.cpp" break; case 266: /* datetime_field_plural: YEARS */ -#line 1223 "bison_parser.y" +#line 1237 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5233 "bison_parser.cpp" +#line 5246 "bison_parser.cpp" break; case 269: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1227 "bison_parser.y" +#line 1241 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5239 "bison_parser.cpp" +#line 5252 "bison_parser.cpp" break; case 270: /* array_index: operand '[' int_literal ']' */ -#line 1229 "bison_parser.y" +#line 1243 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5245 "bison_parser.cpp" +#line 5258 "bison_parser.cpp" break; case 271: /* between_expr: operand BETWEEN operand AND operand */ -#line 1231 "bison_parser.y" +#line 1245 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5251 "bison_parser.cpp" +#line 5264 "bison_parser.cpp" break; case 272: /* column_name: IDENTIFIER */ -#line 1233 "bison_parser.y" +#line 1247 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5257 "bison_parser.cpp" +#line 5270 "bison_parser.cpp" break; case 273: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1234 "bison_parser.y" +#line 1248 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5263 "bison_parser.cpp" +#line 5276 "bison_parser.cpp" break; case 274: /* column_name: '*' */ -#line 1235 "bison_parser.y" +#line 1249 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5269 "bison_parser.cpp" +#line 5282 "bison_parser.cpp" break; case 275: /* column_name: IDENTIFIER '.' '*' */ -#line 1236 "bison_parser.y" +#line 1250 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5275 "bison_parser.cpp" +#line 5288 "bison_parser.cpp" break; case 283: /* string_literal: STRING */ -#line 1240 "bison_parser.y" +#line 1254 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5281 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; case 284: /* bool_literal: TRUE */ -#line 1242 "bison_parser.y" +#line 1256 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5287 "bison_parser.cpp" +#line 5300 "bison_parser.cpp" break; case 285: /* bool_literal: FALSE */ -#line 1243 "bison_parser.y" +#line 1257 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5293 "bison_parser.cpp" +#line 5306 "bison_parser.cpp" break; case 286: /* num_literal: FLOATVAL */ -#line 1245 "bison_parser.y" +#line 1259 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5299 "bison_parser.cpp" +#line 5312 "bison_parser.cpp" break; case 288: /* int_literal: INTVAL */ -#line 1248 "bison_parser.y" +#line 1262 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5305 "bison_parser.cpp" +#line 5318 "bison_parser.cpp" break; case 289: /* null_literal: NULL */ -#line 1250 "bison_parser.y" +#line 1264 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5311 "bison_parser.cpp" +#line 5324 "bison_parser.cpp" break; case 290: /* date_literal: DATE STRING */ -#line 1252 "bison_parser.y" +#line 1266 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5322,17 +5335,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5326 "bison_parser.cpp" +#line 5339 "bison_parser.cpp" break; case 291: /* interval_literal: INTVAL duration_field */ -#line 1263 "bison_parser.y" +#line 1277 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5332 "bison_parser.cpp" +#line 5345 "bison_parser.cpp" break; case 292: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1264 "bison_parser.y" +#line 1278 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5344,11 +5357,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5348 "bison_parser.cpp" +#line 5361 "bison_parser.cpp" break; case 293: /* interval_literal: INTERVAL STRING */ -#line 1275 "bison_parser.y" +#line 1289 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5380,61 +5393,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5384 "bison_parser.cpp" +#line 5397 "bison_parser.cpp" break; case 294: /* param_expr: '?' */ -#line 1307 "bison_parser.y" +#line 1321 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5394 "bison_parser.cpp" +#line 5407 "bison_parser.cpp" break; case 296: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1316 "bison_parser.y" +#line 1330 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5405 "bison_parser.cpp" +#line 5418 "bison_parser.cpp" break; case 300: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1325 "bison_parser.y" +#line 1339 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5416 "bison_parser.cpp" +#line 5429 "bison_parser.cpp" break; case 301: /* table_ref_commalist: table_ref_atomic */ -#line 1332 "bison_parser.y" +#line 1346 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5425 "bison_parser.cpp" +#line 5438 "bison_parser.cpp" break; case 302: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1336 "bison_parser.y" +#line 1350 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5434 "bison_parser.cpp" +#line 5447 "bison_parser.cpp" break; case 303: /* table_ref_name: table_name opt_table_alias */ -#line 1341 "bison_parser.y" +#line 1355 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5442,215 +5455,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5446 "bison_parser.cpp" +#line 5459 "bison_parser.cpp" break; case 304: /* table_ref_name_no_alias: table_name */ -#line 1349 "bison_parser.y" +#line 1363 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5456 "bison_parser.cpp" +#line 5469 "bison_parser.cpp" break; case 305: /* table_name: IDENTIFIER */ -#line 1355 "bison_parser.y" +#line 1369 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5465 "bison_parser.cpp" +#line 5478 "bison_parser.cpp" break; case 306: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1359 "bison_parser.y" +#line 1373 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5474 "bison_parser.cpp" +#line 5487 "bison_parser.cpp" break; case 307: /* opt_index_name: IDENTIFIER */ -#line 1364 "bison_parser.y" +#line 1378 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5480 "bison_parser.cpp" +#line 5493 "bison_parser.cpp" break; case 308: /* opt_index_name: %empty */ -#line 1365 "bison_parser.y" +#line 1379 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5486 "bison_parser.cpp" +#line 5499 "bison_parser.cpp" break; case 310: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1367 "bison_parser.y" +#line 1381 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5492 "bison_parser.cpp" +#line 5505 "bison_parser.cpp" break; case 312: /* opt_table_alias: %empty */ -#line 1369 "bison_parser.y" +#line 1383 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5498 "bison_parser.cpp" +#line 5511 "bison_parser.cpp" break; case 313: /* alias: AS IDENTIFIER */ -#line 1371 "bison_parser.y" +#line 1385 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5504 "bison_parser.cpp" +#line 5517 "bison_parser.cpp" break; case 314: /* alias: IDENTIFIER */ -#line 1372 "bison_parser.y" +#line 1386 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5510 "bison_parser.cpp" +#line 5523 "bison_parser.cpp" break; case 316: /* opt_alias: %empty */ -#line 1374 "bison_parser.y" +#line 1388 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5516 "bison_parser.cpp" +#line 5529 "bison_parser.cpp" break; case 317: /* opt_locking_clause: opt_locking_clause_list */ -#line 1380 "bison_parser.y" +#line 1394 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5522 "bison_parser.cpp" +#line 5535 "bison_parser.cpp" break; case 318: /* opt_locking_clause: %empty */ -#line 1381 "bison_parser.y" +#line 1395 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5528 "bison_parser.cpp" +#line 5541 "bison_parser.cpp" break; case 319: /* opt_locking_clause_list: locking_clause */ -#line 1383 "bison_parser.y" +#line 1397 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5537 "bison_parser.cpp" +#line 5550 "bison_parser.cpp" break; case 320: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1387 "bison_parser.y" +#line 1401 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5546 "bison_parser.cpp" +#line 5559 "bison_parser.cpp" break; case 321: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1392 "bison_parser.y" +#line 1406 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5557 "bison_parser.cpp" +#line 5570 "bison_parser.cpp" break; case 322: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1398 "bison_parser.y" +#line 1412 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5568 "bison_parser.cpp" +#line 5581 "bison_parser.cpp" break; case 323: /* row_lock_mode: UPDATE */ -#line 1405 "bison_parser.y" +#line 1419 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5574 "bison_parser.cpp" +#line 5587 "bison_parser.cpp" break; case 324: /* row_lock_mode: NO KEY UPDATE */ -#line 1406 "bison_parser.y" +#line 1420 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5580 "bison_parser.cpp" +#line 5593 "bison_parser.cpp" break; case 325: /* row_lock_mode: SHARE */ -#line 1407 "bison_parser.y" +#line 1421 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5586 "bison_parser.cpp" +#line 5599 "bison_parser.cpp" break; case 326: /* row_lock_mode: KEY SHARE */ -#line 1408 "bison_parser.y" +#line 1422 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5592 "bison_parser.cpp" +#line 5605 "bison_parser.cpp" break; case 327: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1410 "bison_parser.y" +#line 1424 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5598 "bison_parser.cpp" +#line 5611 "bison_parser.cpp" break; case 328: /* opt_row_lock_policy: NOWAIT */ -#line 1411 "bison_parser.y" +#line 1425 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5604 "bison_parser.cpp" +#line 5617 "bison_parser.cpp" break; case 329: /* opt_row_lock_policy: %empty */ -#line 1412 "bison_parser.y" +#line 1426 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5610 "bison_parser.cpp" +#line 5623 "bison_parser.cpp" break; case 331: /* opt_with_clause: %empty */ -#line 1418 "bison_parser.y" +#line 1432 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5616 "bison_parser.cpp" +#line 5629 "bison_parser.cpp" break; case 332: /* with_clause: WITH with_description_list */ -#line 1420 "bison_parser.y" +#line 1434 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5622 "bison_parser.cpp" +#line 5635 "bison_parser.cpp" break; case 333: /* with_description_list: with_description */ -#line 1422 "bison_parser.y" +#line 1436 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5631 "bison_parser.cpp" +#line 5644 "bison_parser.cpp" break; case 334: /* with_description_list: with_description_list ',' with_description */ -#line 1426 "bison_parser.y" +#line 1440 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5640 "bison_parser.cpp" +#line 5653 "bison_parser.cpp" break; case 335: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1431 "bison_parser.y" +#line 1445 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5650 "bison_parser.cpp" +#line 5663 "bison_parser.cpp" break; case 336: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1441 "bison_parser.y" +#line 1455 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5658,11 +5671,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5662 "bison_parser.cpp" +#line 5675 "bison_parser.cpp" break; case 337: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1448 "bison_parser.y" +#line 1462 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5671,11 +5684,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5675 "bison_parser.cpp" +#line 5688 "bison_parser.cpp" break; case 338: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1456 "bison_parser.y" +#line 1470 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5684,89 +5697,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5688 "bison_parser.cpp" +#line 5701 "bison_parser.cpp" break; case 339: /* opt_join_type: INNER */ -#line 1465 "bison_parser.y" +#line 1479 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5694 "bison_parser.cpp" +#line 5707 "bison_parser.cpp" break; case 340: /* opt_join_type: LEFT OUTER */ -#line 1466 "bison_parser.y" +#line 1480 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5700 "bison_parser.cpp" +#line 5713 "bison_parser.cpp" break; case 341: /* opt_join_type: LEFT */ -#line 1467 "bison_parser.y" +#line 1481 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5706 "bison_parser.cpp" +#line 5719 "bison_parser.cpp" break; case 342: /* opt_join_type: RIGHT OUTER */ -#line 1468 "bison_parser.y" +#line 1482 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5712 "bison_parser.cpp" +#line 5725 "bison_parser.cpp" break; case 343: /* opt_join_type: RIGHT */ -#line 1469 "bison_parser.y" +#line 1483 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5718 "bison_parser.cpp" +#line 5731 "bison_parser.cpp" break; case 344: /* opt_join_type: FULL OUTER */ -#line 1470 "bison_parser.y" +#line 1484 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5724 "bison_parser.cpp" +#line 5737 "bison_parser.cpp" break; case 345: /* opt_join_type: OUTER */ -#line 1471 "bison_parser.y" +#line 1485 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5730 "bison_parser.cpp" +#line 5743 "bison_parser.cpp" break; case 346: /* opt_join_type: FULL */ -#line 1472 "bison_parser.y" +#line 1486 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5736 "bison_parser.cpp" +#line 5749 "bison_parser.cpp" break; case 347: /* opt_join_type: CROSS */ -#line 1473 "bison_parser.y" +#line 1487 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5742 "bison_parser.cpp" +#line 5755 "bison_parser.cpp" break; case 348: /* opt_join_type: %empty */ -#line 1474 "bison_parser.y" +#line 1488 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5748 "bison_parser.cpp" +#line 5761 "bison_parser.cpp" break; case 352: /* ident_commalist: IDENTIFIER */ -#line 1485 "bison_parser.y" +#line 1499 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5757 "bison_parser.cpp" +#line 5770 "bison_parser.cpp" break; case 353: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1489 "bison_parser.y" +#line 1503 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5766 "bison_parser.cpp" +#line 5779 "bison_parser.cpp" break; -#line 5770 "bison_parser.cpp" +#line 5783 "bison_parser.cpp" default: break; } @@ -5995,7 +6008,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1495 "bison_parser.y" +#line 1509 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 0ff5dc5f..7257542a 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -199,6 +199,7 @@ } delete ($$); } +%destructor { free($$->second); delete ($$); } %destructor { delete ($$); } <*> @@ -542,51 +543,64 @@ import_export_options : import_export_options ',' FORMAT file_type { $1->csv_options = new CsvOptions{}; } -#define ASSERT_IS_NULLPTR(ptr) \ - if ((ptr) != nullptr) { \ - delete $1; \ - free($3->second); \ - delete $3; \ - yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); \ - YYERROR; \ + bool freed_ptr = false; + auto free_if_necessary = [&](char* ptr) { + if (ptr != nullptr) { + free(ptr); + freed_ptr = true; + } + }; + + switch ($3->first) { + case CsvOptionType::Delimiter: + free_if_necessary($1->csv_options->delimiter); + $1->csv_options->delimiter = $3->second; + break; + case CsvOptionType::Null: + free_if_necessary($1->csv_options->null); + $1->csv_options->null = $3->second; + break; + case CsvOptionType::Quote: + free_if_necessary($1->csv_options->quote); + $1->csv_options->quote = $3->second; + break; + default: + free($3->second); + delete $3; + delete $1; + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } + delete $3; - if ($3->first == hsql::CsvOptionType::Delimiter) { - ASSERT_IS_NULLPTR($1->csv_options->delimiter); - $$->csv_options->delimiter = $3->second; - } else if ($3->first == hsql::CsvOptionType::Null) { - ASSERT_IS_NULLPTR($1->csv_options->null); - $$->csv_options->null = $3->second; - } else if ($3->first == hsql::CsvOptionType::Quote) { - ASSERT_IS_NULLPTR($1->csv_options->quote); - $$->csv_options->quote = $3->second; - } else { + if (freed_ptr) { delete $1; - free($3->second); - delete $3; - yyerror(&yyloc, result, scanner, "Unknown CSV option."); + yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); YYERROR; } - delete $3; $$ = $1; } | csv_option { $$ = new ImportExportOptions{}; $$->csv_options = new CsvOptions{}; - if ($1->first == hsql::CsvOptionType::Delimiter) { - $$->csv_options->delimiter = $1->second; - } else if ($1->first == hsql::CsvOptionType::Null) { - $$->csv_options->null = $1->second; - } else if ($1->first == hsql::CsvOptionType::Quote) { - $$->csv_options->quote = $1->second; - } else { - free($1->second); - delete $1; - delete $$; - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; + switch ($1->first) { + case CsvOptionType::Delimiter: + $$->csv_options->delimiter = $1->second; + break; + case CsvOptionType::Null: + $$->csv_options->null = $1->second; + break; + case CsvOptionType::Quote: + $$->csv_options->quote = $1->second; + break; + default: + free($1->second); + delete $1; + delete $$; + yyerror(&yyloc, result, scanner, "Unknown CSV option."); + YYERROR; } delete $1; @@ -594,9 +608,9 @@ import_export_options : import_export_options ',' FORMAT file_type { csv_option : IDENTIFIER STRING { if (strcasecmp($1, "DELIMITER") == 0) { - $$ = new std::pair(hsql::CsvOptionType::Delimiter, $2); + $$ = new std::pair(CsvOptionType::Delimiter, $2); } else if (strcasecmp($1, "QUOTE") == 0) { - $$ = new std::pair(hsql::CsvOptionType::Quote, $2); + $$ = new std::pair(CsvOptionType::Quote, $2); } else { free($1); free($2); @@ -605,7 +619,7 @@ csv_option : IDENTIFIER STRING { } free($1); } -| NULL STRING { $$ = new std::pair(hsql::CsvOptionType::Null, $2); } +| NULL STRING { $$ = new std::pair(CsvOptionType::Null, $2); } /****************************** * Export Statement diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index d5b01657..48d26f72 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -97,4 +97,6 @@ !COPY students FROM 'file_path' WITH (FORMAT TBL, DELIMITER '|', NULL '', QUOTE '"'); !COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', FORMAT TBL); !COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', NULL 'a'); +!COPY students FROM 'file_path' WITH (NULL '', QUOTE '"', DELIMITER '|', DELIMITER '/'); +!COPY students FROM 'file_path' WITH (QUOTE '"', NULL '', DELIMITER '/', QUOTE '_',); !COPY students FROM 'file_path' WITH (FORMAT CSV, QUOTE '"', DELIMINIMITER '|'); From 9b4f431a047d02f181f4d630764cafe0d3ca779e Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Tue, 26 Aug 2025 09:10:44 +0200 Subject: [PATCH 06/10] Add addtitional anti testcase --- test/queries/queries-bad.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 48d26f72..e6749ac1 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -96,6 +96,7 @@ # CSV options !COPY students FROM 'file_path' WITH (FORMAT TBL, DELIMITER '|', NULL '', QUOTE '"'); !COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', FORMAT TBL); +!COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', FORMAT TBL, QUOTE '"'); !COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"', NULL 'a'); !COPY students FROM 'file_path' WITH (NULL '', QUOTE '"', DELIMITER '|', DELIMITER '/'); !COPY students FROM 'file_path' WITH (QUOTE '"', NULL '', DELIMITER '/', QUOTE '_',); From 95f98b82d0fca67a74705dc5b6d02a273c181466 Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Fri, 29 Aug 2025 10:43:21 +0200 Subject: [PATCH 07/10] Add more good query examples --- test/queries/queries-good.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index 69d6b1aa..1a45ff6b 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -76,6 +76,8 @@ COPY students FROM 'file_path' WITH (FORMAT BIN); COPY students FROM 'file_path' WITH (FORMAT BINARY); COPY students FROM 'file_path' WITH (FORMAT CSV, DELIMITER '|', NULL '', QUOTE '"'); COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', FORMAT CSV, QUOTE '"'); +COPY students FROM 'file_path' WITH (DELIMITER '|', NULL '', QUOTE '"'); +COPY students FROM 'file_path' WITH (DELIMITER '|', FORMAT CSV); COPY students FROM 'file_path' (FORMAT TBL); COPY good_students FROM 'file_path' WHERE grade > (SELECT AVG(grade) from alumni); COPY students TO 'student.tbl'; From 9c638a7e141085a6d23e3c6065a7343911e27630 Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:34:43 +0200 Subject: [PATCH 08/10] Shorten csv option handling --- src/parser/bison_parser.cpp | 1184 ++++++++++++++++----------------- src/parser/bison_parser.y | 54 +- src/sql/ImportExportOptions.h | 4 + src/sql/statements.cpp | 19 + 4 files changed, 598 insertions(+), 663 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index c754ce40..42935695 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -877,38 +877,38 @@ static const yytype_int16 yyrline[] = 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 397, 398, 400, 404, 409, 413, 423, 424, 425, 427, 427, 433, 439, 441, 445, 457, 463, 480, 495, 497, - 498, 499, 501, 515, 519, 529, 533, 584, 609, 622, - 629, 644, 664, 665, 670, 681, 694, 706, 713, 720, - 729, 730, 732, 736, 741, 742, 744, 752, 753, 754, - 755, 756, 757, 758, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 774, 775, 777, 778, 779, - 781, 782, 784, 788, 792, 797, 805, 806, 807, 808, - 810, 811, 812, 814, 822, 828, 834, 840, 846, 847, - 854, 860, 862, 872, 879, 890, 897, 905, 906, 913, - 920, 924, 929, 939, 943, 947, 959, 959, 961, 962, - 971, 972, 974, 988, 1000, 1005, 1009, 1013, 1018, 1019, - 1021, 1031, 1032, 1034, 1036, 1037, 1039, 1041, 1042, 1044, - 1049, 1051, 1052, 1054, 1055, 1057, 1061, 1066, 1068, 1069, - 1070, 1074, 1075, 1077, 1078, 1079, 1080, 1081, 1082, 1087, - 1091, 1097, 1098, 1100, 1104, 1109, 1109, 1113, 1121, 1122, - 1124, 1133, 1133, 1133, 1133, 1133, 1135, 1136, 1136, 1136, - 1136, 1136, 1136, 1136, 1136, 1137, 1137, 1141, 1141, 1143, - 1144, 1145, 1146, 1147, 1149, 1149, 1150, 1151, 1152, 1153, - 1154, 1155, 1156, 1157, 1158, 1160, 1161, 1163, 1164, 1165, - 1166, 1170, 1171, 1172, 1173, 1175, 1176, 1178, 1179, 1181, - 1182, 1183, 1184, 1185, 1186, 1187, 1191, 1192, 1196, 1197, - 1199, 1200, 1205, 1206, 1207, 1211, 1212, 1213, 1215, 1216, - 1217, 1218, 1219, 1221, 1223, 1225, 1226, 1227, 1228, 1229, - 1230, 1232, 1233, 1234, 1235, 1236, 1237, 1239, 1239, 1241, - 1243, 1245, 1247, 1248, 1249, 1250, 1252, 1252, 1252, 1252, - 1252, 1252, 1252, 1254, 1256, 1257, 1259, 1260, 1262, 1264, - 1266, 1277, 1278, 1289, 1321, 1330, 1330, 1337, 1337, 1339, - 1339, 1346, 1350, 1355, 1363, 1369, 1373, 1378, 1379, 1381, - 1381, 1383, 1383, 1385, 1386, 1388, 1388, 1394, 1395, 1397, - 1401, 1406, 1412, 1419, 1420, 1421, 1422, 1424, 1425, 1426, - 1432, 1432, 1434, 1436, 1440, 1445, 1455, 1462, 1470, 1479, - 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1490, - 1496, 1496, 1499, 1503 + 498, 499, 501, 515, 519, 529, 533, 557, 565, 578, + 585, 600, 620, 621, 626, 637, 650, 662, 669, 676, + 685, 686, 688, 692, 697, 698, 700, 708, 709, 710, + 711, 712, 713, 714, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 728, 730, 731, 733, 734, 735, + 737, 738, 740, 744, 748, 753, 761, 762, 763, 764, + 766, 767, 768, 770, 778, 784, 790, 796, 802, 803, + 810, 816, 818, 828, 835, 846, 853, 861, 862, 869, + 876, 880, 885, 895, 899, 903, 915, 915, 917, 918, + 927, 928, 930, 944, 956, 961, 965, 969, 974, 975, + 977, 987, 988, 990, 992, 993, 995, 997, 998, 1000, + 1005, 1007, 1008, 1010, 1011, 1013, 1017, 1022, 1024, 1025, + 1026, 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038, 1043, + 1047, 1053, 1054, 1056, 1060, 1065, 1065, 1069, 1077, 1078, + 1080, 1089, 1089, 1089, 1089, 1089, 1091, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1093, 1093, 1097, 1097, 1099, + 1100, 1101, 1102, 1103, 1105, 1105, 1106, 1107, 1108, 1109, + 1110, 1111, 1112, 1113, 1114, 1116, 1117, 1119, 1120, 1121, + 1122, 1126, 1127, 1128, 1129, 1131, 1132, 1134, 1135, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1147, 1148, 1152, 1153, + 1155, 1156, 1161, 1162, 1163, 1167, 1168, 1169, 1171, 1172, + 1173, 1174, 1175, 1177, 1179, 1181, 1182, 1183, 1184, 1185, + 1186, 1188, 1189, 1190, 1191, 1192, 1193, 1195, 1195, 1197, + 1199, 1201, 1203, 1204, 1205, 1206, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1210, 1212, 1213, 1215, 1216, 1218, 1220, + 1222, 1233, 1234, 1245, 1277, 1286, 1286, 1293, 1293, 1295, + 1295, 1302, 1306, 1311, 1319, 1325, 1329, 1334, 1335, 1337, + 1337, 1339, 1339, 1341, 1342, 1344, 1344, 1350, 1351, 1353, + 1357, 1362, 1368, 1375, 1376, 1377, 1378, 1380, 1381, 1382, + 1388, 1388, 1390, 1392, 1396, 1401, 1411, 1418, 1426, 1435, + 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1446, + 1452, 1452, 1455, 1459 }; #endif @@ -3698,78 +3698,34 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].import_export_option_t)->csv_options = new CsvOptions{}; } - bool freed_ptr = false; - auto free_if_necessary = [&](char* ptr) { - if (ptr != nullptr) { - free(ptr); - freed_ptr = true; - } - }; - - switch ((yyvsp[0].csv_option_t)->first) { - case CsvOptionType::Delimiter: - free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->delimiter); - (yyvsp[-2].import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; - break; - case CsvOptionType::Null: - free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->null); - (yyvsp[-2].import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; - break; - case CsvOptionType::Quote: - free_if_necessary((yyvsp[-2].import_export_option_t)->csv_options->quote); - (yyvsp[-2].import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; - break; - default: - free((yyvsp[0].csv_option_t)->second); - delete (yyvsp[0].csv_option_t); - delete (yyvsp[-2].import_export_option_t); - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; - } - delete (yyvsp[0].csv_option_t); - - if (freed_ptr) { + if (!(yyvsp[-2].import_export_option_t)->accept_csv_option((yyvsp[0].csv_option_t))) { + free((yyvsp[0].csv_option_t)->second); + delete (yyvsp[0].csv_option_t); delete (yyvsp[-2].import_export_option_t); yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); YYERROR; } + delete (yyvsp[0].csv_option_t); (yyval.import_export_option_t) = (yyvsp[-2].import_export_option_t); } -#line 3740 "bison_parser.cpp" +#line 3713 "bison_parser.cpp" break; case 47: /* import_export_options: csv_option */ -#line 584 "bison_parser.y" +#line 557 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->csv_options = new CsvOptions{}; - - switch ((yyvsp[0].csv_option_t)->first) { - case CsvOptionType::Delimiter: - (yyval.import_export_option_t)->csv_options->delimiter = (yyvsp[0].csv_option_t)->second; - break; - case CsvOptionType::Null: - (yyval.import_export_option_t)->csv_options->null = (yyvsp[0].csv_option_t)->second; - break; - case CsvOptionType::Quote: - (yyval.import_export_option_t)->csv_options->quote = (yyvsp[0].csv_option_t)->second; - break; - default: - free((yyvsp[0].csv_option_t)->second); - delete (yyvsp[0].csv_option_t); - delete (yyval.import_export_option_t); - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; - } + (yyval.import_export_option_t)->accept_csv_option((yyvsp[0].csv_option_t)); delete (yyvsp[0].csv_option_t); } -#line 3769 "bison_parser.cpp" +#line 3725 "bison_parser.cpp" break; case 48: /* csv_option: IDENTIFIER STRING */ -#line 609 "bison_parser.y" +#line 565 "bison_parser.y" { if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { (yyval.csv_option_t) = new std::pair(CsvOptionType::Delimiter, (yyvsp[0].sval)); @@ -3783,17 +3739,17 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[-1].sval)); } -#line 3787 "bison_parser.cpp" +#line 3743 "bison_parser.cpp" break; case 49: /* csv_option: NULL STRING */ -#line 622 "bison_parser.y" +#line 578 "bison_parser.y" { (yyval.csv_option_t) = new std::pair(CsvOptionType::Null, (yyvsp[0].sval)); } -#line 3793 "bison_parser.cpp" +#line 3749 "bison_parser.cpp" break; case 50: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 629 "bison_parser.y" +#line 585 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3809,11 +3765,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3813 "bison_parser.cpp" +#line 3769 "bison_parser.cpp" break; case 51: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 644 "bison_parser.y" +#line 600 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3828,37 +3784,37 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3832 "bison_parser.cpp" +#line 3788 "bison_parser.cpp" break; case 52: /* show_statement: SHOW TABLES */ -#line 664 "bison_parser.y" +#line 620 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3838 "bison_parser.cpp" +#line 3794 "bison_parser.cpp" break; case 53: /* show_statement: SHOW COLUMNS table_name */ -#line 665 "bison_parser.y" +#line 621 "bison_parser.y" { (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 3848 "bison_parser.cpp" +#line 3804 "bison_parser.cpp" break; case 54: /* show_statement: DESCRIBE table_name */ -#line 670 "bison_parser.y" +#line 626 "bison_parser.y" { (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 3858 "bison_parser.cpp" +#line 3814 "bison_parser.cpp" break; case 55: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 681 "bison_parser.y" +#line 637 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3872,11 +3828,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3876 "bison_parser.cpp" +#line 3832 "bison_parser.cpp" break; case 56: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 694 "bison_parser.y" +#line 650 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3889,11 +3845,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3893 "bison_parser.cpp" +#line 3849 "bison_parser.cpp" break; case 57: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 706 "bison_parser.y" +#line 662 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3901,11 +3857,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3905 "bison_parser.cpp" +#line 3861 "bison_parser.cpp" break; case 58: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 713 "bison_parser.y" +#line 669 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3913,11 +3869,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3917 "bison_parser.cpp" +#line 3873 "bison_parser.cpp" break; case 59: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 720 "bison_parser.y" +#line 676 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3926,53 +3882,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3930 "bison_parser.cpp" +#line 3886 "bison_parser.cpp" break; case 60: /* opt_not_exists: IF NOT EXISTS */ -#line 729 "bison_parser.y" +#line 685 "bison_parser.y" { (yyval.bval) = true; } -#line 3936 "bison_parser.cpp" +#line 3892 "bison_parser.cpp" break; case 61: /* opt_not_exists: %empty */ -#line 730 "bison_parser.y" +#line 686 "bison_parser.y" { (yyval.bval) = false; } -#line 3942 "bison_parser.cpp" +#line 3898 "bison_parser.cpp" break; case 62: /* table_elem_commalist: table_elem */ -#line 732 "bison_parser.y" +#line 688 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3951 "bison_parser.cpp" +#line 3907 "bison_parser.cpp" break; case 63: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 736 "bison_parser.y" +#line 692 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3960 "bison_parser.cpp" +#line 3916 "bison_parser.cpp" break; case 64: /* table_elem: column_def */ -#line 741 "bison_parser.y" +#line 697 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3966 "bison_parser.cpp" +#line 3922 "bison_parser.cpp" break; case 65: /* table_elem: table_constraint */ -#line 742 "bison_parser.y" +#line 698 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3972 "bison_parser.cpp" +#line 3928 "bison_parser.cpp" break; case 66: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 744 "bison_parser.y" +#line 700 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3980,192 +3936,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3984 "bison_parser.cpp" +#line 3940 "bison_parser.cpp" break; case 67: /* column_type: BIGINT */ -#line 752 "bison_parser.y" +#line 708 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3990 "bison_parser.cpp" +#line 3946 "bison_parser.cpp" break; case 68: /* column_type: BOOLEAN */ -#line 753 "bison_parser.y" +#line 709 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3996 "bison_parser.cpp" +#line 3952 "bison_parser.cpp" break; case 69: /* column_type: CHAR '(' INTVAL ')' */ -#line 754 "bison_parser.y" +#line 710 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 4002 "bison_parser.cpp" +#line 3958 "bison_parser.cpp" break; case 70: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 755 "bison_parser.y" +#line 711 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4008 "bison_parser.cpp" +#line 3964 "bison_parser.cpp" break; case 71: /* column_type: DATE */ -#line 756 "bison_parser.y" +#line 712 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 4014 "bison_parser.cpp" +#line 3970 "bison_parser.cpp" break; case 72: /* column_type: DATETIME */ -#line 757 "bison_parser.y" +#line 713 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4020 "bison_parser.cpp" +#line 3976 "bison_parser.cpp" break; case 73: /* column_type: DECIMAL opt_decimal_specification */ -#line 758 "bison_parser.y" +#line 714 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 4029 "bison_parser.cpp" +#line 3985 "bison_parser.cpp" break; case 74: /* column_type: DOUBLE */ -#line 762 "bison_parser.y" +#line 718 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 4035 "bison_parser.cpp" +#line 3991 "bison_parser.cpp" break; case 75: /* column_type: FLOAT */ -#line 763 "bison_parser.y" +#line 719 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 4041 "bison_parser.cpp" +#line 3997 "bison_parser.cpp" break; case 76: /* column_type: INT */ -#line 764 "bison_parser.y" +#line 720 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4047 "bison_parser.cpp" +#line 4003 "bison_parser.cpp" break; case 77: /* column_type: INTEGER */ -#line 765 "bison_parser.y" +#line 721 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4053 "bison_parser.cpp" +#line 4009 "bison_parser.cpp" break; case 78: /* column_type: LONG */ -#line 766 "bison_parser.y" +#line 722 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 4059 "bison_parser.cpp" +#line 4015 "bison_parser.cpp" break; case 79: /* column_type: REAL */ -#line 767 "bison_parser.y" +#line 723 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 4065 "bison_parser.cpp" +#line 4021 "bison_parser.cpp" break; case 80: /* column_type: SMALLINT */ -#line 768 "bison_parser.y" +#line 724 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 4071 "bison_parser.cpp" +#line 4027 "bison_parser.cpp" break; case 81: /* column_type: TEXT */ -#line 769 "bison_parser.y" +#line 725 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 4077 "bison_parser.cpp" +#line 4033 "bison_parser.cpp" break; case 82: /* column_type: TIME opt_time_precision */ -#line 770 "bison_parser.y" +#line 726 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 4083 "bison_parser.cpp" +#line 4039 "bison_parser.cpp" break; case 83: /* column_type: TIMESTAMP */ -#line 771 "bison_parser.y" +#line 727 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4089 "bison_parser.cpp" +#line 4045 "bison_parser.cpp" break; case 84: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 772 "bison_parser.y" +#line 728 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4095 "bison_parser.cpp" +#line 4051 "bison_parser.cpp" break; case 85: /* opt_time_precision: '(' INTVAL ')' */ -#line 774 "bison_parser.y" +#line 730 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 4101 "bison_parser.cpp" +#line 4057 "bison_parser.cpp" break; case 86: /* opt_time_precision: %empty */ -#line 775 "bison_parser.y" +#line 731 "bison_parser.y" { (yyval.ival) = 0; } -#line 4107 "bison_parser.cpp" +#line 4063 "bison_parser.cpp" break; case 87: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 777 "bison_parser.y" +#line 733 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 4113 "bison_parser.cpp" +#line 4069 "bison_parser.cpp" break; case 88: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 778 "bison_parser.y" +#line 734 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 4119 "bison_parser.cpp" +#line 4075 "bison_parser.cpp" break; case 89: /* opt_decimal_specification: %empty */ -#line 779 "bison_parser.y" +#line 735 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 4125 "bison_parser.cpp" +#line 4081 "bison_parser.cpp" break; case 90: /* opt_column_constraints: column_constraints */ -#line 781 "bison_parser.y" +#line 737 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4131 "bison_parser.cpp" +#line 4087 "bison_parser.cpp" break; case 91: /* opt_column_constraints: %empty */ -#line 782 "bison_parser.y" +#line 738 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4137 "bison_parser.cpp" +#line 4093 "bison_parser.cpp" break; case 92: /* column_constraints: column_constraint */ -#line 784 "bison_parser.y" +#line 740 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4146 "bison_parser.cpp" +#line 4102 "bison_parser.cpp" break; case 93: /* column_constraints: column_constraints column_constraint */ -#line 788 "bison_parser.y" +#line 744 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4155 "bison_parser.cpp" +#line 4111 "bison_parser.cpp" break; case 94: /* column_constraints: references_spec */ -#line 792 "bison_parser.y" +#line 748 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4165 "bison_parser.cpp" +#line 4121 "bison_parser.cpp" break; case 95: /* column_constraints: column_constraints references_spec */ -#line 797 "bison_parser.y" +#line 753 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4173,159 +4129,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4177 "bison_parser.cpp" +#line 4133 "bison_parser.cpp" break; case 96: /* column_constraint: PRIMARY KEY */ -#line 805 "bison_parser.y" +#line 761 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4183 "bison_parser.cpp" +#line 4139 "bison_parser.cpp" break; case 97: /* column_constraint: UNIQUE */ -#line 806 "bison_parser.y" +#line 762 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4189 "bison_parser.cpp" +#line 4145 "bison_parser.cpp" break; case 98: /* column_constraint: NULL */ -#line 807 "bison_parser.y" +#line 763 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4195 "bison_parser.cpp" +#line 4151 "bison_parser.cpp" break; case 99: /* column_constraint: NOT NULL */ -#line 808 "bison_parser.y" +#line 764 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4201 "bison_parser.cpp" +#line 4157 "bison_parser.cpp" break; case 100: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 810 "bison_parser.y" +#line 766 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4207 "bison_parser.cpp" +#line 4163 "bison_parser.cpp" break; case 101: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 811 "bison_parser.y" +#line 767 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4213 "bison_parser.cpp" +#line 4169 "bison_parser.cpp" break; case 102: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 812 "bison_parser.y" +#line 768 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4219 "bison_parser.cpp" +#line 4175 "bison_parser.cpp" break; case 103: /* references_spec: REFERENCES table_name opt_column_list */ -#line 814 "bison_parser.y" +#line 770 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4225 "bison_parser.cpp" +#line 4181 "bison_parser.cpp" break; case 104: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 822 "bison_parser.y" +#line 778 "bison_parser.y" { (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 4236 "bison_parser.cpp" +#line 4192 "bison_parser.cpp" break; case 105: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 828 "bison_parser.y" +#line 784 "bison_parser.y" { (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 4247 "bison_parser.cpp" +#line 4203 "bison_parser.cpp" break; case 106: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 834 "bison_parser.y" +#line 790 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4257 "bison_parser.cpp" +#line 4213 "bison_parser.cpp" break; case 107: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 840 "bison_parser.y" +#line 796 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4267 "bison_parser.cpp" +#line 4223 "bison_parser.cpp" break; case 108: /* opt_exists: IF EXISTS */ -#line 846 "bison_parser.y" +#line 802 "bison_parser.y" { (yyval.bval) = true; } -#line 4273 "bison_parser.cpp" +#line 4229 "bison_parser.cpp" break; case 109: /* opt_exists: %empty */ -#line 847 "bison_parser.y" +#line 803 "bison_parser.y" { (yyval.bval) = false; } -#line 4279 "bison_parser.cpp" +#line 4235 "bison_parser.cpp" break; case 110: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 854 "bison_parser.y" +#line 810 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4289 "bison_parser.cpp" +#line 4245 "bison_parser.cpp" break; case 111: /* alter_action: drop_action */ -#line 860 "bison_parser.y" +#line 816 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4295 "bison_parser.cpp" +#line 4251 "bison_parser.cpp" break; case 112: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 862 "bison_parser.y" +#line 818 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4304 "bison_parser.cpp" +#line 4260 "bison_parser.cpp" break; case 113: /* delete_statement: DELETE FROM table_name opt_where */ -#line 872 "bison_parser.y" +#line 828 "bison_parser.y" { (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 4315 "bison_parser.cpp" +#line 4271 "bison_parser.cpp" break; case 114: /* truncate_statement: TRUNCATE table_name */ -#line 879 "bison_parser.y" +#line 835 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4325 "bison_parser.cpp" +#line 4281 "bison_parser.cpp" break; case 115: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 890 "bison_parser.y" +#line 846 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4333,11 +4289,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4337 "bison_parser.cpp" +#line 4293 "bison_parser.cpp" break; case 116: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 897 "bison_parser.y" +#line 853 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4345,80 +4301,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4349 "bison_parser.cpp" +#line 4305 "bison_parser.cpp" break; case 117: /* opt_column_list: '(' ident_commalist ')' */ -#line 905 "bison_parser.y" +#line 861 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4355 "bison_parser.cpp" +#line 4311 "bison_parser.cpp" break; case 118: /* opt_column_list: %empty */ -#line 906 "bison_parser.y" +#line 862 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4361 "bison_parser.cpp" +#line 4317 "bison_parser.cpp" break; case 119: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 913 "bison_parser.y" +#line 869 "bison_parser.y" { (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 4372 "bison_parser.cpp" +#line 4328 "bison_parser.cpp" break; case 120: /* update_clause_commalist: update_clause */ -#line 920 "bison_parser.y" +#line 876 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4381 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; case 121: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 924 "bison_parser.y" +#line 880 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4390 "bison_parser.cpp" +#line 4346 "bison_parser.cpp" break; case 122: /* update_clause: IDENTIFIER '=' expr */ -#line 929 "bison_parser.y" +#line 885 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4400 "bison_parser.cpp" +#line 4356 "bison_parser.cpp" break; case 123: /* select_statement: opt_with_clause select_with_paren */ -#line 939 "bison_parser.y" +#line 895 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4409 "bison_parser.cpp" +#line 4365 "bison_parser.cpp" break; case 124: /* select_statement: opt_with_clause select_no_paren */ -#line 943 "bison_parser.y" +#line 899 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4418 "bison_parser.cpp" +#line 4374 "bison_parser.cpp" break; case 125: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 947 "bison_parser.y" +#line 903 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4430,17 +4386,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4434 "bison_parser.cpp" +#line 4390 "bison_parser.cpp" break; case 128: /* select_within_set_operation_no_parentheses: select_clause */ -#line 961 "bison_parser.y" +#line 917 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4440 "bison_parser.cpp" +#line 4396 "bison_parser.cpp" break; case 129: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 962 "bison_parser.y" +#line 918 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4449,23 +4405,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4453 "bison_parser.cpp" +#line 4409 "bison_parser.cpp" break; case 130: /* select_with_paren: '(' select_no_paren ')' */ -#line 971 "bison_parser.y" +#line 927 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4459 "bison_parser.cpp" +#line 4415 "bison_parser.cpp" break; case 131: /* select_with_paren: '(' select_with_paren ')' */ -#line 972 "bison_parser.y" +#line 928 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4465 "bison_parser.cpp" +#line 4421 "bison_parser.cpp" break; case 132: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 974 "bison_parser.y" +#line 930 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4480,11 +4436,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4484 "bison_parser.cpp" +#line 4440 "bison_parser.cpp" break; case 133: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 988 "bison_parser.y" +#line 944 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4496,59 +4452,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4500 "bison_parser.cpp" +#line 4456 "bison_parser.cpp" break; case 134: /* set_operator: set_type opt_all */ -#line 1000 "bison_parser.y" +#line 956 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4509 "bison_parser.cpp" +#line 4465 "bison_parser.cpp" break; case 135: /* set_type: UNION */ -#line 1005 "bison_parser.y" +#line 961 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4518 "bison_parser.cpp" +#line 4474 "bison_parser.cpp" break; case 136: /* set_type: INTERSECT */ -#line 1009 "bison_parser.y" +#line 965 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4527 "bison_parser.cpp" +#line 4483 "bison_parser.cpp" break; case 137: /* set_type: EXCEPT */ -#line 1013 "bison_parser.y" +#line 969 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4536 "bison_parser.cpp" +#line 4492 "bison_parser.cpp" break; case 138: /* opt_all: ALL */ -#line 1018 "bison_parser.y" +#line 974 "bison_parser.y" { (yyval.bval) = true; } -#line 4542 "bison_parser.cpp" +#line 4498 "bison_parser.cpp" break; case 139: /* opt_all: %empty */ -#line 1019 "bison_parser.y" +#line 975 "bison_parser.y" { (yyval.bval) = false; } -#line 4548 "bison_parser.cpp" +#line 4504 "bison_parser.cpp" break; case 140: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 1021 "bison_parser.y" +#line 977 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4558,239 +4514,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4562 "bison_parser.cpp" +#line 4518 "bison_parser.cpp" break; case 141: /* opt_distinct: DISTINCT */ -#line 1031 "bison_parser.y" +#line 987 "bison_parser.y" { (yyval.bval) = true; } -#line 4568 "bison_parser.cpp" +#line 4524 "bison_parser.cpp" break; case 142: /* opt_distinct: %empty */ -#line 1032 "bison_parser.y" +#line 988 "bison_parser.y" { (yyval.bval) = false; } -#line 4574 "bison_parser.cpp" +#line 4530 "bison_parser.cpp" break; case 144: /* opt_from_clause: from_clause */ -#line 1036 "bison_parser.y" +#line 992 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4580 "bison_parser.cpp" +#line 4536 "bison_parser.cpp" break; case 145: /* opt_from_clause: %empty */ -#line 1037 "bison_parser.y" +#line 993 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4586 "bison_parser.cpp" +#line 4542 "bison_parser.cpp" break; case 146: /* from_clause: FROM table_ref */ -#line 1039 "bison_parser.y" +#line 995 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4592 "bison_parser.cpp" +#line 4548 "bison_parser.cpp" break; case 147: /* opt_where: WHERE expr */ -#line 1041 "bison_parser.y" +#line 997 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4598 "bison_parser.cpp" +#line 4554 "bison_parser.cpp" break; case 148: /* opt_where: %empty */ -#line 1042 "bison_parser.y" +#line 998 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4604 "bison_parser.cpp" +#line 4560 "bison_parser.cpp" break; case 149: /* opt_group: GROUP BY expr_list opt_having */ -#line 1044 "bison_parser.y" +#line 1000 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4614 "bison_parser.cpp" +#line 4570 "bison_parser.cpp" break; case 150: /* opt_group: %empty */ -#line 1049 "bison_parser.y" +#line 1005 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4620 "bison_parser.cpp" +#line 4576 "bison_parser.cpp" break; case 151: /* opt_having: HAVING expr */ -#line 1051 "bison_parser.y" +#line 1007 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4626 "bison_parser.cpp" +#line 4582 "bison_parser.cpp" break; case 152: /* opt_having: %empty */ -#line 1052 "bison_parser.y" +#line 1008 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4632 "bison_parser.cpp" +#line 4588 "bison_parser.cpp" break; case 153: /* opt_order: ORDER BY order_list */ -#line 1054 "bison_parser.y" +#line 1010 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4638 "bison_parser.cpp" +#line 4594 "bison_parser.cpp" break; case 154: /* opt_order: %empty */ -#line 1055 "bison_parser.y" +#line 1011 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4644 "bison_parser.cpp" +#line 4600 "bison_parser.cpp" break; case 155: /* order_list: order_desc */ -#line 1057 "bison_parser.y" +#line 1013 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4653 "bison_parser.cpp" +#line 4609 "bison_parser.cpp" break; case 156: /* order_list: order_list ',' order_desc */ -#line 1061 "bison_parser.y" +#line 1017 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4662 "bison_parser.cpp" +#line 4618 "bison_parser.cpp" break; case 157: /* order_desc: expr opt_order_type */ -#line 1066 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4668 "bison_parser.cpp" +#line 4624 "bison_parser.cpp" break; case 158: /* opt_order_type: ASC */ -#line 1068 "bison_parser.y" +#line 1024 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4674 "bison_parser.cpp" +#line 4630 "bison_parser.cpp" break; case 159: /* opt_order_type: DESC */ -#line 1069 "bison_parser.y" +#line 1025 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4680 "bison_parser.cpp" +#line 4636 "bison_parser.cpp" break; case 160: /* opt_order_type: %empty */ -#line 1070 "bison_parser.y" +#line 1026 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4686 "bison_parser.cpp" +#line 4642 "bison_parser.cpp" break; case 161: /* opt_top: TOP int_literal */ -#line 1074 "bison_parser.y" +#line 1030 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4692 "bison_parser.cpp" +#line 4648 "bison_parser.cpp" break; case 162: /* opt_top: %empty */ -#line 1075 "bison_parser.y" +#line 1031 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4698 "bison_parser.cpp" +#line 4654 "bison_parser.cpp" break; case 163: /* opt_limit: LIMIT expr */ -#line 1077 "bison_parser.y" +#line 1033 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4704 "bison_parser.cpp" +#line 4660 "bison_parser.cpp" break; case 164: /* opt_limit: OFFSET expr */ -#line 1078 "bison_parser.y" +#line 1034 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4710 "bison_parser.cpp" +#line 4666 "bison_parser.cpp" break; case 165: /* opt_limit: LIMIT expr OFFSET expr */ -#line 1079 "bison_parser.y" +#line 1035 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4716 "bison_parser.cpp" +#line 4672 "bison_parser.cpp" break; case 166: /* opt_limit: LIMIT ALL */ -#line 1080 "bison_parser.y" +#line 1036 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4722 "bison_parser.cpp" +#line 4678 "bison_parser.cpp" break; case 167: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 1081 "bison_parser.y" +#line 1037 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4728 "bison_parser.cpp" +#line 4684 "bison_parser.cpp" break; case 168: /* opt_limit: %empty */ -#line 1082 "bison_parser.y" +#line 1038 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4734 "bison_parser.cpp" +#line 4690 "bison_parser.cpp" break; case 169: /* expr_list: expr_alias */ -#line 1087 "bison_parser.y" +#line 1043 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4743 "bison_parser.cpp" +#line 4699 "bison_parser.cpp" break; case 170: /* expr_list: expr_list ',' expr_alias */ -#line 1091 "bison_parser.y" +#line 1047 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4752 "bison_parser.cpp" +#line 4708 "bison_parser.cpp" break; case 171: /* opt_extended_literal_list: extended_literal_list */ -#line 1097 "bison_parser.y" +#line 1053 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4758 "bison_parser.cpp" +#line 4714 "bison_parser.cpp" break; case 172: /* opt_extended_literal_list: %empty */ -#line 1098 "bison_parser.y" +#line 1054 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4764 "bison_parser.cpp" +#line 4720 "bison_parser.cpp" break; case 173: /* extended_literal_list: casted_extended_literal */ -#line 1100 "bison_parser.y" +#line 1056 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4773 "bison_parser.cpp" +#line 4729 "bison_parser.cpp" break; case 174: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 1104 "bison_parser.y" +#line 1060 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4782 "bison_parser.cpp" +#line 4738 "bison_parser.cpp" break; case 176: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 1109 "bison_parser.y" +#line 1065 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4790 "bison_parser.cpp" +#line 4746 "bison_parser.cpp" break; case 177: /* extended_literal: literal */ -#line 1113 "bison_parser.y" +#line 1069 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4799,23 +4755,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4803 "bison_parser.cpp" +#line 4759 "bison_parser.cpp" break; case 178: /* extended_literal: '-' num_literal */ -#line 1121 "bison_parser.y" +#line 1077 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4809 "bison_parser.cpp" +#line 4765 "bison_parser.cpp" break; case 179: /* extended_literal: '-' interval_literal */ -#line 1122 "bison_parser.y" +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4815 "bison_parser.cpp" +#line 4771 "bison_parser.cpp" break; case 180: /* expr_alias: expr opt_alias */ -#line 1124 "bison_parser.y" +#line 1080 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4824,507 +4780,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4828 "bison_parser.cpp" +#line 4784 "bison_parser.cpp" break; case 186: /* operand: '(' expr ')' */ -#line 1135 "bison_parser.y" +#line 1091 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4834 "bison_parser.cpp" +#line 4790 "bison_parser.cpp" break; case 196: /* operand: '(' select_no_paren ')' */ -#line 1137 "bison_parser.y" +#line 1093 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4842 "bison_parser.cpp" +#line 4798 "bison_parser.cpp" break; case 199: /* unary_expr: '-' operand */ -#line 1143 "bison_parser.y" +#line 1099 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4848 "bison_parser.cpp" +#line 4804 "bison_parser.cpp" break; case 200: /* unary_expr: NOT operand */ -#line 1144 "bison_parser.y" +#line 1100 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4854 "bison_parser.cpp" +#line 4810 "bison_parser.cpp" break; case 201: /* unary_expr: operand ISNULL */ -#line 1145 "bison_parser.y" +#line 1101 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4860 "bison_parser.cpp" +#line 4816 "bison_parser.cpp" break; case 202: /* unary_expr: operand IS NULL */ -#line 1146 "bison_parser.y" +#line 1102 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4866 "bison_parser.cpp" +#line 4822 "bison_parser.cpp" break; case 203: /* unary_expr: operand IS NOT NULL */ -#line 1147 "bison_parser.y" +#line 1103 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4872 "bison_parser.cpp" +#line 4828 "bison_parser.cpp" break; case 205: /* binary_expr: operand '-' operand */ -#line 1149 "bison_parser.y" +#line 1105 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4878 "bison_parser.cpp" +#line 4834 "bison_parser.cpp" break; case 206: /* binary_expr: operand '+' operand */ -#line 1150 "bison_parser.y" +#line 1106 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4884 "bison_parser.cpp" +#line 4840 "bison_parser.cpp" break; case 207: /* binary_expr: operand '/' operand */ -#line 1151 "bison_parser.y" +#line 1107 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4890 "bison_parser.cpp" +#line 4846 "bison_parser.cpp" break; case 208: /* binary_expr: operand '*' operand */ -#line 1152 "bison_parser.y" +#line 1108 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4896 "bison_parser.cpp" +#line 4852 "bison_parser.cpp" break; case 209: /* binary_expr: operand '%' operand */ -#line 1153 "bison_parser.y" +#line 1109 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4902 "bison_parser.cpp" +#line 4858 "bison_parser.cpp" break; case 210: /* binary_expr: operand '^' operand */ -#line 1154 "bison_parser.y" +#line 1110 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4908 "bison_parser.cpp" +#line 4864 "bison_parser.cpp" break; case 211: /* binary_expr: operand LIKE operand */ -#line 1155 "bison_parser.y" +#line 1111 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4914 "bison_parser.cpp" +#line 4870 "bison_parser.cpp" break; case 212: /* binary_expr: operand NOT LIKE operand */ -#line 1156 "bison_parser.y" +#line 1112 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4920 "bison_parser.cpp" +#line 4876 "bison_parser.cpp" break; case 213: /* binary_expr: operand ILIKE operand */ -#line 1157 "bison_parser.y" +#line 1113 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4926 "bison_parser.cpp" +#line 4882 "bison_parser.cpp" break; case 214: /* binary_expr: operand CONCAT operand */ -#line 1158 "bison_parser.y" +#line 1114 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4932 "bison_parser.cpp" +#line 4888 "bison_parser.cpp" break; case 215: /* logic_expr: expr AND expr */ -#line 1160 "bison_parser.y" +#line 1116 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4938 "bison_parser.cpp" +#line 4894 "bison_parser.cpp" break; case 216: /* logic_expr: expr OR expr */ -#line 1161 "bison_parser.y" +#line 1117 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4944 "bison_parser.cpp" +#line 4900 "bison_parser.cpp" break; case 217: /* in_expr: operand IN '(' expr_list ')' */ -#line 1163 "bison_parser.y" +#line 1119 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4950 "bison_parser.cpp" +#line 4906 "bison_parser.cpp" break; case 218: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1164 "bison_parser.y" +#line 1120 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4956 "bison_parser.cpp" +#line 4912 "bison_parser.cpp" break; case 219: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1165 "bison_parser.y" +#line 1121 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4962 "bison_parser.cpp" +#line 4918 "bison_parser.cpp" break; case 220: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1166 "bison_parser.y" +#line 1122 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4968 "bison_parser.cpp" +#line 4924 "bison_parser.cpp" break; case 221: /* case_expr: CASE expr case_list END */ -#line 1170 "bison_parser.y" +#line 1126 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4974 "bison_parser.cpp" +#line 4930 "bison_parser.cpp" break; case 222: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1171 "bison_parser.y" +#line 1127 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4980 "bison_parser.cpp" +#line 4936 "bison_parser.cpp" break; case 223: /* case_expr: CASE case_list END */ -#line 1172 "bison_parser.y" +#line 1128 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4986 "bison_parser.cpp" +#line 4942 "bison_parser.cpp" break; case 224: /* case_expr: CASE case_list ELSE expr END */ -#line 1173 "bison_parser.y" +#line 1129 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4992 "bison_parser.cpp" +#line 4948 "bison_parser.cpp" break; case 225: /* case_list: WHEN expr THEN expr */ -#line 1175 "bison_parser.y" +#line 1131 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4998 "bison_parser.cpp" +#line 4954 "bison_parser.cpp" break; case 226: /* case_list: case_list WHEN expr THEN expr */ -#line 1176 "bison_parser.y" +#line 1132 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 5004 "bison_parser.cpp" +#line 4960 "bison_parser.cpp" break; case 227: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1178 "bison_parser.y" +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 5010 "bison_parser.cpp" +#line 4966 "bison_parser.cpp" break; case 228: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1179 "bison_parser.y" +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 5016 "bison_parser.cpp" +#line 4972 "bison_parser.cpp" break; case 229: /* comp_expr: operand '=' operand */ -#line 1181 "bison_parser.y" +#line 1137 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5022 "bison_parser.cpp" +#line 4978 "bison_parser.cpp" break; case 230: /* comp_expr: operand EQUALS operand */ -#line 1182 "bison_parser.y" +#line 1138 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5028 "bison_parser.cpp" +#line 4984 "bison_parser.cpp" break; case 231: /* comp_expr: operand NOTEQUALS operand */ -#line 1183 "bison_parser.y" +#line 1139 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 5034 "bison_parser.cpp" +#line 4990 "bison_parser.cpp" break; case 232: /* comp_expr: operand '<' operand */ -#line 1184 "bison_parser.y" +#line 1140 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 5040 "bison_parser.cpp" +#line 4996 "bison_parser.cpp" break; case 233: /* comp_expr: operand '>' operand */ -#line 1185 "bison_parser.y" +#line 1141 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 5046 "bison_parser.cpp" +#line 5002 "bison_parser.cpp" break; case 234: /* comp_expr: operand LESSEQ operand */ -#line 1186 "bison_parser.y" +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 5052 "bison_parser.cpp" +#line 5008 "bison_parser.cpp" break; case 235: /* comp_expr: operand GREATEREQ operand */ -#line 1187 "bison_parser.y" +#line 1143 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 5058 "bison_parser.cpp" +#line 5014 "bison_parser.cpp" break; case 236: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1191 "bison_parser.y" +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 5064 "bison_parser.cpp" +#line 5020 "bison_parser.cpp" break; case 237: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1192 "bison_parser.y" +#line 1148 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 5070 "bison_parser.cpp" +#line 5026 "bison_parser.cpp" break; case 238: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1196 "bison_parser.y" +#line 1152 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 5076 "bison_parser.cpp" +#line 5032 "bison_parser.cpp" break; case 239: /* opt_window: %empty */ -#line 1197 "bison_parser.y" +#line 1153 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 5082 "bison_parser.cpp" +#line 5038 "bison_parser.cpp" break; case 240: /* opt_partition: PARTITION BY expr_list */ -#line 1199 "bison_parser.y" +#line 1155 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 5088 "bison_parser.cpp" +#line 5044 "bison_parser.cpp" break; case 241: /* opt_partition: %empty */ -#line 1200 "bison_parser.y" +#line 1156 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 5094 "bison_parser.cpp" +#line 5050 "bison_parser.cpp" break; case 242: /* opt_frame_clause: frame_type frame_bound */ -#line 1205 "bison_parser.y" +#line 1161 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 5100 "bison_parser.cpp" +#line 5056 "bison_parser.cpp" break; case 243: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1206 "bison_parser.y" +#line 1162 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 5106 "bison_parser.cpp" +#line 5062 "bison_parser.cpp" break; case 244: /* opt_frame_clause: %empty */ -#line 1207 "bison_parser.y" +#line 1163 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 5114 "bison_parser.cpp" +#line 5070 "bison_parser.cpp" break; case 245: /* frame_type: RANGE */ -#line 1211 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 5120 "bison_parser.cpp" +#line 5076 "bison_parser.cpp" break; case 246: /* frame_type: ROWS */ -#line 1212 "bison_parser.y" +#line 1168 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 5126 "bison_parser.cpp" +#line 5082 "bison_parser.cpp" break; case 247: /* frame_type: GROUPS */ -#line 1213 "bison_parser.y" +#line 1169 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5132 "bison_parser.cpp" +#line 5088 "bison_parser.cpp" break; case 248: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1215 "bison_parser.y" +#line 1171 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5138 "bison_parser.cpp" +#line 5094 "bison_parser.cpp" break; case 249: /* frame_bound: INTVAL PRECEDING */ -#line 1216 "bison_parser.y" +#line 1172 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5144 "bison_parser.cpp" +#line 5100 "bison_parser.cpp" break; case 250: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1217 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5150 "bison_parser.cpp" +#line 5106 "bison_parser.cpp" break; case 251: /* frame_bound: INTVAL FOLLOWING */ -#line 1218 "bison_parser.y" +#line 1174 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5156 "bison_parser.cpp" +#line 5112 "bison_parser.cpp" break; case 252: /* frame_bound: CURRENT_ROW */ -#line 1219 "bison_parser.y" +#line 1175 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5162 "bison_parser.cpp" +#line 5118 "bison_parser.cpp" break; case 253: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1221 "bison_parser.y" +#line 1177 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5168 "bison_parser.cpp" +#line 5124 "bison_parser.cpp" break; case 254: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1223 "bison_parser.y" +#line 1179 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5174 "bison_parser.cpp" +#line 5130 "bison_parser.cpp" break; case 255: /* datetime_field: SECOND */ -#line 1225 "bison_parser.y" +#line 1181 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5180 "bison_parser.cpp" +#line 5136 "bison_parser.cpp" break; case 256: /* datetime_field: MINUTE */ -#line 1226 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5186 "bison_parser.cpp" +#line 5142 "bison_parser.cpp" break; case 257: /* datetime_field: HOUR */ -#line 1227 "bison_parser.y" +#line 1183 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5192 "bison_parser.cpp" +#line 5148 "bison_parser.cpp" break; case 258: /* datetime_field: DAY */ -#line 1228 "bison_parser.y" +#line 1184 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5198 "bison_parser.cpp" +#line 5154 "bison_parser.cpp" break; case 259: /* datetime_field: MONTH */ -#line 1229 "bison_parser.y" +#line 1185 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5204 "bison_parser.cpp" +#line 5160 "bison_parser.cpp" break; case 260: /* datetime_field: YEAR */ -#line 1230 "bison_parser.y" +#line 1186 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5210 "bison_parser.cpp" +#line 5166 "bison_parser.cpp" break; case 261: /* datetime_field_plural: SECONDS */ -#line 1232 "bison_parser.y" +#line 1188 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5216 "bison_parser.cpp" +#line 5172 "bison_parser.cpp" break; case 262: /* datetime_field_plural: MINUTES */ -#line 1233 "bison_parser.y" +#line 1189 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5222 "bison_parser.cpp" +#line 5178 "bison_parser.cpp" break; case 263: /* datetime_field_plural: HOURS */ -#line 1234 "bison_parser.y" +#line 1190 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5228 "bison_parser.cpp" +#line 5184 "bison_parser.cpp" break; case 264: /* datetime_field_plural: DAYS */ -#line 1235 "bison_parser.y" +#line 1191 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5234 "bison_parser.cpp" +#line 5190 "bison_parser.cpp" break; case 265: /* datetime_field_plural: MONTHS */ -#line 1236 "bison_parser.y" +#line 1192 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5240 "bison_parser.cpp" +#line 5196 "bison_parser.cpp" break; case 266: /* datetime_field_plural: YEARS */ -#line 1237 "bison_parser.y" +#line 1193 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5246 "bison_parser.cpp" +#line 5202 "bison_parser.cpp" break; case 269: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1241 "bison_parser.y" +#line 1197 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5252 "bison_parser.cpp" +#line 5208 "bison_parser.cpp" break; case 270: /* array_index: operand '[' int_literal ']' */ -#line 1243 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5258 "bison_parser.cpp" +#line 5214 "bison_parser.cpp" break; case 271: /* between_expr: operand BETWEEN operand AND operand */ -#line 1245 "bison_parser.y" +#line 1201 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5264 "bison_parser.cpp" +#line 5220 "bison_parser.cpp" break; case 272: /* column_name: IDENTIFIER */ -#line 1247 "bison_parser.y" +#line 1203 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5270 "bison_parser.cpp" +#line 5226 "bison_parser.cpp" break; case 273: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1248 "bison_parser.y" +#line 1204 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5276 "bison_parser.cpp" +#line 5232 "bison_parser.cpp" break; case 274: /* column_name: '*' */ -#line 1249 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5282 "bison_parser.cpp" +#line 5238 "bison_parser.cpp" break; case 275: /* column_name: IDENTIFIER '.' '*' */ -#line 1250 "bison_parser.y" +#line 1206 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5288 "bison_parser.cpp" +#line 5244 "bison_parser.cpp" break; case 283: /* string_literal: STRING */ -#line 1254 "bison_parser.y" +#line 1210 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5294 "bison_parser.cpp" +#line 5250 "bison_parser.cpp" break; case 284: /* bool_literal: TRUE */ -#line 1256 "bison_parser.y" +#line 1212 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5300 "bison_parser.cpp" +#line 5256 "bison_parser.cpp" break; case 285: /* bool_literal: FALSE */ -#line 1257 "bison_parser.y" +#line 1213 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5306 "bison_parser.cpp" +#line 5262 "bison_parser.cpp" break; case 286: /* num_literal: FLOATVAL */ -#line 1259 "bison_parser.y" +#line 1215 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5312 "bison_parser.cpp" +#line 5268 "bison_parser.cpp" break; case 288: /* int_literal: INTVAL */ -#line 1262 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5318 "bison_parser.cpp" +#line 5274 "bison_parser.cpp" break; case 289: /* null_literal: NULL */ -#line 1264 "bison_parser.y" +#line 1220 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5324 "bison_parser.cpp" +#line 5280 "bison_parser.cpp" break; case 290: /* date_literal: DATE STRING */ -#line 1266 "bison_parser.y" +#line 1222 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5335,17 +5291,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5339 "bison_parser.cpp" +#line 5295 "bison_parser.cpp" break; case 291: /* interval_literal: INTVAL duration_field */ -#line 1277 "bison_parser.y" +#line 1233 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5345 "bison_parser.cpp" +#line 5301 "bison_parser.cpp" break; case 292: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1278 "bison_parser.y" +#line 1234 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5357,11 +5313,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5361 "bison_parser.cpp" +#line 5317 "bison_parser.cpp" break; case 293: /* interval_literal: INTERVAL STRING */ -#line 1289 "bison_parser.y" +#line 1245 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5393,61 +5349,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5397 "bison_parser.cpp" +#line 5353 "bison_parser.cpp" break; case 294: /* param_expr: '?' */ -#line 1321 "bison_parser.y" +#line 1277 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5407 "bison_parser.cpp" +#line 5363 "bison_parser.cpp" break; case 296: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1330 "bison_parser.y" +#line 1286 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5418 "bison_parser.cpp" +#line 5374 "bison_parser.cpp" break; case 300: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1339 "bison_parser.y" +#line 1295 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5429 "bison_parser.cpp" +#line 5385 "bison_parser.cpp" break; case 301: /* table_ref_commalist: table_ref_atomic */ -#line 1346 "bison_parser.y" +#line 1302 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5438 "bison_parser.cpp" +#line 5394 "bison_parser.cpp" break; case 302: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1350 "bison_parser.y" +#line 1306 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5447 "bison_parser.cpp" +#line 5403 "bison_parser.cpp" break; case 303: /* table_ref_name: table_name opt_table_alias */ -#line 1355 "bison_parser.y" +#line 1311 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5455,215 +5411,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5459 "bison_parser.cpp" +#line 5415 "bison_parser.cpp" break; case 304: /* table_ref_name_no_alias: table_name */ -#line 1363 "bison_parser.y" +#line 1319 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5469 "bison_parser.cpp" +#line 5425 "bison_parser.cpp" break; case 305: /* table_name: IDENTIFIER */ -#line 1369 "bison_parser.y" +#line 1325 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5478 "bison_parser.cpp" +#line 5434 "bison_parser.cpp" break; case 306: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1373 "bison_parser.y" +#line 1329 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5487 "bison_parser.cpp" +#line 5443 "bison_parser.cpp" break; case 307: /* opt_index_name: IDENTIFIER */ -#line 1378 "bison_parser.y" +#line 1334 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5493 "bison_parser.cpp" +#line 5449 "bison_parser.cpp" break; case 308: /* opt_index_name: %empty */ -#line 1379 "bison_parser.y" +#line 1335 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5499 "bison_parser.cpp" +#line 5455 "bison_parser.cpp" break; case 310: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1381 "bison_parser.y" +#line 1337 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5505 "bison_parser.cpp" +#line 5461 "bison_parser.cpp" break; case 312: /* opt_table_alias: %empty */ -#line 1383 "bison_parser.y" +#line 1339 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5511 "bison_parser.cpp" +#line 5467 "bison_parser.cpp" break; case 313: /* alias: AS IDENTIFIER */ -#line 1385 "bison_parser.y" +#line 1341 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5517 "bison_parser.cpp" +#line 5473 "bison_parser.cpp" break; case 314: /* alias: IDENTIFIER */ -#line 1386 "bison_parser.y" +#line 1342 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5523 "bison_parser.cpp" +#line 5479 "bison_parser.cpp" break; case 316: /* opt_alias: %empty */ -#line 1388 "bison_parser.y" +#line 1344 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5529 "bison_parser.cpp" +#line 5485 "bison_parser.cpp" break; case 317: /* opt_locking_clause: opt_locking_clause_list */ -#line 1394 "bison_parser.y" +#line 1350 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5535 "bison_parser.cpp" +#line 5491 "bison_parser.cpp" break; case 318: /* opt_locking_clause: %empty */ -#line 1395 "bison_parser.y" +#line 1351 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5541 "bison_parser.cpp" +#line 5497 "bison_parser.cpp" break; case 319: /* opt_locking_clause_list: locking_clause */ -#line 1397 "bison_parser.y" +#line 1353 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5550 "bison_parser.cpp" +#line 5506 "bison_parser.cpp" break; case 320: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1401 "bison_parser.y" +#line 1357 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5559 "bison_parser.cpp" +#line 5515 "bison_parser.cpp" break; case 321: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1406 "bison_parser.y" +#line 1362 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5570 "bison_parser.cpp" +#line 5526 "bison_parser.cpp" break; case 322: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1412 "bison_parser.y" +#line 1368 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5581 "bison_parser.cpp" +#line 5537 "bison_parser.cpp" break; case 323: /* row_lock_mode: UPDATE */ -#line 1419 "bison_parser.y" +#line 1375 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5587 "bison_parser.cpp" +#line 5543 "bison_parser.cpp" break; case 324: /* row_lock_mode: NO KEY UPDATE */ -#line 1420 "bison_parser.y" +#line 1376 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5593 "bison_parser.cpp" +#line 5549 "bison_parser.cpp" break; case 325: /* row_lock_mode: SHARE */ -#line 1421 "bison_parser.y" +#line 1377 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5599 "bison_parser.cpp" +#line 5555 "bison_parser.cpp" break; case 326: /* row_lock_mode: KEY SHARE */ -#line 1422 "bison_parser.y" +#line 1378 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5605 "bison_parser.cpp" +#line 5561 "bison_parser.cpp" break; case 327: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1424 "bison_parser.y" +#line 1380 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5611 "bison_parser.cpp" +#line 5567 "bison_parser.cpp" break; case 328: /* opt_row_lock_policy: NOWAIT */ -#line 1425 "bison_parser.y" +#line 1381 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5617 "bison_parser.cpp" +#line 5573 "bison_parser.cpp" break; case 329: /* opt_row_lock_policy: %empty */ -#line 1426 "bison_parser.y" +#line 1382 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5623 "bison_parser.cpp" +#line 5579 "bison_parser.cpp" break; case 331: /* opt_with_clause: %empty */ -#line 1432 "bison_parser.y" +#line 1388 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5629 "bison_parser.cpp" +#line 5585 "bison_parser.cpp" break; case 332: /* with_clause: WITH with_description_list */ -#line 1434 "bison_parser.y" +#line 1390 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5635 "bison_parser.cpp" +#line 5591 "bison_parser.cpp" break; case 333: /* with_description_list: with_description */ -#line 1436 "bison_parser.y" +#line 1392 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5644 "bison_parser.cpp" +#line 5600 "bison_parser.cpp" break; case 334: /* with_description_list: with_description_list ',' with_description */ -#line 1440 "bison_parser.y" +#line 1396 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5653 "bison_parser.cpp" +#line 5609 "bison_parser.cpp" break; case 335: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1445 "bison_parser.y" +#line 1401 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5663 "bison_parser.cpp" +#line 5619 "bison_parser.cpp" break; case 336: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1455 "bison_parser.y" +#line 1411 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5671,11 +5627,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5675 "bison_parser.cpp" +#line 5631 "bison_parser.cpp" break; case 337: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1462 "bison_parser.y" +#line 1418 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5684,11 +5640,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5688 "bison_parser.cpp" +#line 5644 "bison_parser.cpp" break; case 338: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1470 "bison_parser.y" +#line 1426 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5697,89 +5653,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5701 "bison_parser.cpp" +#line 5657 "bison_parser.cpp" break; case 339: /* opt_join_type: INNER */ -#line 1479 "bison_parser.y" +#line 1435 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5707 "bison_parser.cpp" +#line 5663 "bison_parser.cpp" break; case 340: /* opt_join_type: LEFT OUTER */ -#line 1480 "bison_parser.y" +#line 1436 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5713 "bison_parser.cpp" +#line 5669 "bison_parser.cpp" break; case 341: /* opt_join_type: LEFT */ -#line 1481 "bison_parser.y" +#line 1437 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5719 "bison_parser.cpp" +#line 5675 "bison_parser.cpp" break; case 342: /* opt_join_type: RIGHT OUTER */ -#line 1482 "bison_parser.y" +#line 1438 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5725 "bison_parser.cpp" +#line 5681 "bison_parser.cpp" break; case 343: /* opt_join_type: RIGHT */ -#line 1483 "bison_parser.y" +#line 1439 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5731 "bison_parser.cpp" +#line 5687 "bison_parser.cpp" break; case 344: /* opt_join_type: FULL OUTER */ -#line 1484 "bison_parser.y" +#line 1440 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5737 "bison_parser.cpp" +#line 5693 "bison_parser.cpp" break; case 345: /* opt_join_type: OUTER */ -#line 1485 "bison_parser.y" +#line 1441 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5743 "bison_parser.cpp" +#line 5699 "bison_parser.cpp" break; case 346: /* opt_join_type: FULL */ -#line 1486 "bison_parser.y" +#line 1442 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5749 "bison_parser.cpp" +#line 5705 "bison_parser.cpp" break; case 347: /* opt_join_type: CROSS */ -#line 1487 "bison_parser.y" +#line 1443 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5755 "bison_parser.cpp" +#line 5711 "bison_parser.cpp" break; case 348: /* opt_join_type: %empty */ -#line 1488 "bison_parser.y" +#line 1444 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5761 "bison_parser.cpp" +#line 5717 "bison_parser.cpp" break; case 352: /* ident_commalist: IDENTIFIER */ -#line 1499 "bison_parser.y" +#line 1455 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5770 "bison_parser.cpp" +#line 5726 "bison_parser.cpp" break; case 353: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1503 "bison_parser.y" +#line 1459 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5779 "bison_parser.cpp" +#line 5735 "bison_parser.cpp" break; -#line 5783 "bison_parser.cpp" +#line 5739 "bison_parser.cpp" default: break; } @@ -6008,7 +5964,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1509 "bison_parser.y" +#line 1465 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 7257542a..3a6482d3 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -543,65 +543,21 @@ import_export_options : import_export_options ',' FORMAT file_type { $1->csv_options = new CsvOptions{}; } - bool freed_ptr = false; - auto free_if_necessary = [&](char* ptr) { - if (ptr != nullptr) { - free(ptr); - freed_ptr = true; - } - }; - - switch ($3->first) { - case CsvOptionType::Delimiter: - free_if_necessary($1->csv_options->delimiter); - $1->csv_options->delimiter = $3->second; - break; - case CsvOptionType::Null: - free_if_necessary($1->csv_options->null); - $1->csv_options->null = $3->second; - break; - case CsvOptionType::Quote: - free_if_necessary($1->csv_options->quote); - $1->csv_options->quote = $3->second; - break; - default: - free($3->second); - delete $3; - delete $1; - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; - } - delete $3; - - if (freed_ptr) { + if (!$1->accept_csv_option($3)) { + free($3->second); + delete $3; delete $1; yyerror(&yyloc, result, scanner, "CSV options (DELIMITER, NULL, QUOTE) cannot be provided more than once."); YYERROR; } + delete $3; $$ = $1; } | csv_option { $$ = new ImportExportOptions{}; $$->csv_options = new CsvOptions{}; - - switch ($1->first) { - case CsvOptionType::Delimiter: - $$->csv_options->delimiter = $1->second; - break; - case CsvOptionType::Null: - $$->csv_options->null = $1->second; - break; - case CsvOptionType::Quote: - $$->csv_options->quote = $1->second; - break; - default: - free($1->second); - delete $1; - delete $$; - yyerror(&yyloc, result, scanner, "Unknown CSV option."); - YYERROR; - } + $$->accept_csv_option($1); delete $1; } diff --git a/src/sql/ImportExportOptions.h b/src/sql/ImportExportOptions.h index 9c49bde8..dc89fadc 100644 --- a/src/sql/ImportExportOptions.h +++ b/src/sql/ImportExportOptions.h @@ -1,6 +1,8 @@ #ifndef SQLPARSER_IMPORT_EXPORT_OPTIONS_H #define SQLPARSER_IMPORT_EXPORT_OPTIONS_H +#include + namespace hsql { // Name unchanged for compatibility. Historically, this was only used for import statements before we introduced export @@ -35,6 +37,8 @@ struct ImportExportOptions { ImportType format; char* encoding; CsvOptions* csv_options; + + bool accept_csv_option(std::pair* option); }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index f891d647..c0b48bbf 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -166,6 +166,25 @@ ImportExportOptions::~ImportExportOptions() { delete csv_options; } +bool ImportExportOptions::accept_csv_option(std::pair* option) { + switch (option->first) { + case CsvOptionType::Delimiter: + if (csv_options->delimiter != nullptr) return false; + csv_options->delimiter = option->second; + break; + case CsvOptionType::Null: + if (csv_options->null != nullptr) return false; + csv_options->null = option->second; + break; + case CsvOptionType::Quote: + if (csv_options->quote != nullptr) return false; + csv_options->quote = option->second; + break; + } + + return true; +} + // ImportStatement ImportStatement::ImportStatement(ImportType type) : SQLStatement(kStmtImport), From 31b8916715e53e6853f07e57aaab0fb0333eca1c Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Wed, 3 Sep 2025 17:02:39 +0400 Subject: [PATCH 09/10] Move accept_csv_option to struct CsvOptions --- src/parser/bison_parser.cpp | 4 ++-- src/parser/bison_parser.y | 4 ++-- src/sql/ImportExportOptions.h | 4 ++-- src/sql/statements.cpp | 28 ++++++++++++++-------------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index eba39421..01706229 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -3721,7 +3721,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].import_export_option_t)->csv_options = new CsvOptions{}; } - if (!(yyvsp[-2].import_export_option_t)->accept_csv_option((yyvsp[0].csv_option_t))) { + if (!(yyvsp[-2].import_export_option_t)->csv_options->accept_csv_option((yyvsp[0].csv_option_t))) { free((yyvsp[0].csv_option_t)->second); delete (yyvsp[0].csv_option_t); delete (yyvsp[-2].import_export_option_t); @@ -3740,7 +3740,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->csv_options = new CsvOptions{}; - (yyval.import_export_option_t)->accept_csv_option((yyvsp[0].csv_option_t)); + (yyval.import_export_option_t)->csv_options->accept_csv_option((yyvsp[0].csv_option_t)); delete (yyvsp[0].csv_option_t); } diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 5ea8df1e..491edc13 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -545,7 +545,7 @@ import_export_options : import_export_options ',' FORMAT file_type { $1->csv_options = new CsvOptions{}; } - if (!$1->accept_csv_option($3)) { + if (!$1->csv_options->accept_csv_option($3)) { free($3->second); delete $3; delete $1; @@ -559,7 +559,7 @@ import_export_options : import_export_options ',' FORMAT file_type { | csv_option { $$ = new ImportExportOptions{}; $$->csv_options = new CsvOptions{}; - $$->accept_csv_option($1); + $$->csv_options->accept_csv_option($1); delete $1; } diff --git a/src/sql/ImportExportOptions.h b/src/sql/ImportExportOptions.h index dc89fadc..cd0fa31f 100644 --- a/src/sql/ImportExportOptions.h +++ b/src/sql/ImportExportOptions.h @@ -28,6 +28,8 @@ struct CsvOptions { char* delimiter; char* null; char* quote; + + bool accept_csv_option(std::pair* option); }; struct ImportExportOptions { @@ -37,8 +39,6 @@ struct ImportExportOptions { ImportType format; char* encoding; CsvOptions* csv_options; - - bool accept_csv_option(std::pair* option); }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 6614224d..bfd3145e 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -159,32 +159,32 @@ CsvOptions::~CsvOptions() { free(quote); } -ImportExportOptions::ImportExportOptions() : format(kImportAuto), encoding(nullptr), csv_options(nullptr) {} - -ImportExportOptions::~ImportExportOptions() { - free(encoding); - delete csv_options; -} - -bool ImportExportOptions::accept_csv_option(std::pair* option) { +bool CsvOptions::accept_csv_option(std::pair* option) { switch (option->first) { case CsvOptionType::Delimiter: - if (csv_options->delimiter != nullptr) return false; - csv_options->delimiter = option->second; + if (delimiter != nullptr) return false; + delimiter = option->second; break; case CsvOptionType::Null: - if (csv_options->null != nullptr) return false; - csv_options->null = option->second; + if (null != nullptr) return false; + null = option->second; break; case CsvOptionType::Quote: - if (csv_options->quote != nullptr) return false; - csv_options->quote = option->second; + if (quote != nullptr) return false; + quote = option->second; break; } return true; } +ImportExportOptions::ImportExportOptions() : format(kImportAuto), encoding(nullptr), csv_options(nullptr) {} + +ImportExportOptions::~ImportExportOptions() { + free(encoding); + delete csv_options; +} + // ImportStatement ImportStatement::ImportStatement(ImportType type) : SQLStatement(kStmtImport), From 5166a80c6973626747d51d93053f313eb31db2a6 Mon Sep 17 00:00:00 2001 From: Lukas Hagen <43916057+Greenscreen23@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:56:08 +0200 Subject: [PATCH 10/10] Last changes --- src/parser/bison_parser.cpp | 1743 ++++++++++++++++++----------------- src/parser/bison_parser.y | 5 +- src/sql/statements.cpp | 12 +- 3 files changed, 886 insertions(+), 874 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 01706229..0bba6ad7 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -874,42 +874,42 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 340, 340, 359, 365, 372, 376, 380, 381, 382, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 399, 400, 402, 406, 411, 415, 425, 426, 427, 429, - 429, 435, 441, 443, 447, 459, 465, 482, 497, 499, - 500, 501, 503, 517, 521, 531, 535, 559, 567, 580, - 587, 602, 622, 623, 628, 639, 652, 664, 671, 678, - 687, 688, 690, 694, 699, 700, 702, 710, 711, 712, - 713, 714, 715, 716, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 732, 733, 735, 736, 737, - 739, 740, 742, 746, 750, 755, 763, 764, 765, 766, - 768, 769, 770, 772, 780, 786, 792, 798, 804, 805, - 812, 818, 820, 830, 837, 848, 855, 863, 864, 871, - 878, 882, 887, 897, 901, 905, 917, 917, 919, 920, - 929, 930, 932, 946, 958, 963, 967, 971, 976, 977, - 979, 989, 990, 992, 994, 995, 997, 999, 1000, 1002, - 1007, 1009, 1010, 1012, 1013, 1015, 1019, 1024, 1026, 1027, - 1028, 1030, 1031, 1053, 1054, 1056, 1057, 1058, 1059, 1060, - 1061, 1066, 1070, 1076, 1077, 1079, 1083, 1088, 1088, 1092, - 1100, 1101, 1103, 1112, 1112, 1112, 1112, 1112, 1114, 1115, - 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1116, 1120, - 1120, 1122, 1123, 1124, 1125, 1126, 1128, 1128, 1129, 1130, - 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1140, 1142, - 1143, 1144, 1145, 1149, 1150, 1151, 1152, 1154, 1155, 1157, - 1158, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1170, 1171, - 1175, 1176, 1178, 1179, 1184, 1185, 1186, 1190, 1191, 1192, - 1194, 1195, 1196, 1197, 1198, 1200, 1202, 1204, 1205, 1206, - 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215, 1216, 1218, - 1218, 1220, 1222, 1224, 1226, 1227, 1228, 1229, 1231, 1231, - 1231, 1231, 1231, 1231, 1231, 1233, 1235, 1236, 1238, 1239, - 1241, 1243, 1245, 1256, 1257, 1268, 1300, 1309, 1309, 1316, - 1316, 1318, 1318, 1325, 1329, 1334, 1342, 1348, 1352, 1357, - 1358, 1360, 1360, 1362, 1362, 1364, 1365, 1367, 1367, 1373, - 1374, 1376, 1380, 1385, 1391, 1398, 1399, 1400, 1401, 1403, - 1404, 1405, 1411, 1411, 1413, 1415, 1419, 1424, 1434, 1441, - 1449, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, - 1467, 1469, 1475, 1475, 1478, 1482 + 0, 343, 343, 362, 368, 375, 379, 383, 384, 385, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 402, 403, 405, 409, 414, 418, 428, 429, 430, 432, + 432, 438, 444, 446, 450, 462, 468, 485, 500, 502, + 503, 504, 506, 520, 524, 534, 538, 562, 570, 583, + 590, 605, 625, 626, 631, 642, 655, 667, 674, 681, + 690, 691, 693, 697, 702, 703, 705, 713, 714, 715, + 716, 717, 718, 719, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 735, 736, 738, 739, 740, + 742, 743, 745, 749, 753, 758, 766, 767, 768, 769, + 771, 772, 773, 775, 783, 789, 795, 801, 807, 808, + 815, 821, 823, 833, 840, 851, 858, 866, 867, 874, + 881, 885, 890, 900, 904, 908, 920, 920, 922, 923, + 932, 933, 935, 949, 961, 966, 970, 974, 979, 980, + 982, 992, 993, 995, 997, 998, 1000, 1002, 1003, 1005, + 1010, 1012, 1013, 1015, 1016, 1018, 1022, 1027, 1029, 1030, + 1031, 1033, 1034, 1056, 1057, 1059, 1060, 1061, 1062, 1063, + 1064, 1069, 1073, 1079, 1080, 1082, 1086, 1091, 1091, 1095, + 1103, 1104, 1106, 1115, 1115, 1115, 1115, 1115, 1117, 1118, + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1119, 1123, + 1123, 1125, 1126, 1127, 1128, 1129, 1131, 1131, 1132, 1133, + 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1142, 1143, 1145, + 1146, 1147, 1148, 1152, 1153, 1154, 1155, 1157, 1158, 1160, + 1161, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1173, 1174, + 1178, 1179, 1181, 1182, 1187, 1188, 1189, 1193, 1194, 1195, + 1197, 1198, 1199, 1200, 1201, 1203, 1205, 1207, 1208, 1209, + 1210, 1211, 1212, 1214, 1215, 1216, 1217, 1218, 1219, 1221, + 1221, 1223, 1225, 1227, 1229, 1230, 1231, 1232, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1236, 1238, 1239, 1241, 1242, + 1244, 1246, 1248, 1259, 1260, 1271, 1303, 1312, 1312, 1319, + 1319, 1321, 1321, 1328, 1332, 1337, 1345, 1351, 1355, 1360, + 1361, 1363, 1363, 1365, 1365, 1367, 1368, 1370, 1370, 1376, + 1377, 1379, 1383, 1388, 1394, 1401, 1402, 1403, 1404, 1406, + 1407, 1408, 1414, 1414, 1416, 1418, 1422, 1427, 1437, 1444, + 1452, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, + 1470, 1472, 1478, 1478, 1481, 1485 }; #endif @@ -2142,13 +2142,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_statement: /* statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).statement)); } #line 2148 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).statement)); } #line 2154 "bison_parser.cpp" break; @@ -2180,19 +2180,19 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_hint: /* hint */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2186 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } #line 2192 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } #line 2198 "bison_parser.cpp" break; @@ -2204,13 +2204,13 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } #line 2210 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } #line 2216 "bison_parser.cpp" break; @@ -2228,45 +2228,48 @@ yydestruct (const char *yymsg, break; case YYSYMBOL_opt_import_export_options: /* opt_import_export_options */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } #line 2234 "bison_parser.cpp" break; case YYSYMBOL_import_export_options: /* import_export_options */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } #line 2240 "bison_parser.cpp" break; case YYSYMBOL_csv_option: /* csv_option */ #line 203 "bison_parser.y" - { free(((*yyvaluep).csv_option_t)->second); delete (((*yyvaluep).csv_option_t)); } -#line 2246 "bison_parser.cpp" + { + free(((*yyvaluep).csv_option_t)->second); + delete (((*yyvaluep).csv_option_t)); +} +#line 2249 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2252 "bison_parser.cpp" +#line 2255 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2258 "bison_parser.cpp" +#line 2261 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2264 "bison_parser.cpp" +#line 2267 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ #line 181 "bison_parser.y" { } -#line 2270 "bison_parser.cpp" +#line 2273 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ @@ -2279,115 +2282,115 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2283 "bison_parser.cpp" +#line 2286 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2289 "bison_parser.cpp" +#line 2292 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2295 "bison_parser.cpp" +#line 2298 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ #line 181 "bison_parser.y" { } -#line 2301 "bison_parser.cpp" +#line 2304 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ #line 181 "bison_parser.y" { } -#line 2307 "bison_parser.cpp" +#line 2310 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2313 "bison_parser.cpp" +#line 2316 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2319 "bison_parser.cpp" +#line 2322 "bison_parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2325 "bison_parser.cpp" +#line 2328 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ #line 181 "bison_parser.y" { } -#line 2331 "bison_parser.cpp" +#line 2334 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2337 "bison_parser.cpp" +#line 2340 "bison_parser.cpp" break; case YYSYMBOL_references_spec: /* references_spec */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).references_spec_t)); } -#line 2343 "bison_parser.cpp" +#line 2346 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2349 "bison_parser.cpp" +#line 2352 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ #line 181 "bison_parser.y" { } -#line 2355 "bison_parser.cpp" +#line 2358 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2361 "bison_parser.cpp" +#line 2364 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2367 "bison_parser.cpp" +#line 2370 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2373 "bison_parser.cpp" +#line 2376 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2379 "bison_parser.cpp" +#line 2382 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2385 "bison_parser.cpp" +#line 2388 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2391 "bison_parser.cpp" +#line 2394 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ @@ -2400,13 +2403,13 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2404 "bison_parser.cpp" +#line 2407 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2410 "bison_parser.cpp" +#line 2413 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ @@ -2419,73 +2422,73 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2423 "bison_parser.cpp" +#line 2426 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2429 "bison_parser.cpp" +#line 2432 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2435 "bison_parser.cpp" +#line 2438 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2441 "bison_parser.cpp" +#line 2444 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2447 "bison_parser.cpp" +#line 2450 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2453 "bison_parser.cpp" +#line 2456 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2459 "bison_parser.cpp" +#line 2462 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2465 "bison_parser.cpp" +#line 2468 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2471 "bison_parser.cpp" +#line 2474 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ #line 181 "bison_parser.y" { } -#line 2477 "bison_parser.cpp" +#line 2480 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2483 "bison_parser.cpp" +#line 2486 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ #line 181 "bison_parser.y" { } -#line 2489 "bison_parser.cpp" +#line 2492 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ @@ -2498,37 +2501,37 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2502 "bison_parser.cpp" +#line 2505 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2508 "bison_parser.cpp" +#line 2511 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2514 "bison_parser.cpp" +#line 2517 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2520 "bison_parser.cpp" +#line 2523 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2526 "bison_parser.cpp" +#line 2529 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2532 "bison_parser.cpp" +#line 2535 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ @@ -2541,7 +2544,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2545 "bison_parser.cpp" +#line 2548 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ @@ -2554,37 +2557,37 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2558 "bison_parser.cpp" +#line 2561 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2564 "bison_parser.cpp" +#line 2567 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ #line 181 "bison_parser.y" { } -#line 2570 "bison_parser.cpp" +#line 2573 "bison_parser.cpp" break; case YYSYMBOL_opt_null_ordering: /* opt_null_ordering */ #line 181 "bison_parser.y" { } -#line 2576 "bison_parser.cpp" +#line 2579 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2582 "bison_parser.cpp" +#line 2585 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2588 "bison_parser.cpp" +#line 2591 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ @@ -2597,7 +2600,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2601 "bison_parser.cpp" +#line 2604 "bison_parser.cpp" break; case YYSYMBOL_opt_extended_literal_list: /* opt_extended_literal_list */ @@ -2610,7 +2613,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2614 "bison_parser.cpp" +#line 2617 "bison_parser.cpp" break; case YYSYMBOL_extended_literal_list: /* extended_literal_list */ @@ -2623,103 +2626,103 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2627 "bison_parser.cpp" +#line 2630 "bison_parser.cpp" break; case YYSYMBOL_casted_extended_literal: /* casted_extended_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2633 "bison_parser.cpp" +#line 2636 "bison_parser.cpp" break; case YYSYMBOL_extended_literal: /* extended_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2639 "bison_parser.cpp" +#line 2642 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2645 "bison_parser.cpp" +#line 2648 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2651 "bison_parser.cpp" +#line 2654 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2657 "bison_parser.cpp" +#line 2660 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2663 "bison_parser.cpp" +#line 2666 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2669 "bison_parser.cpp" +#line 2672 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2675 "bison_parser.cpp" +#line 2678 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2681 "bison_parser.cpp" +#line 2684 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2687 "bison_parser.cpp" +#line 2690 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2693 "bison_parser.cpp" +#line 2696 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2699 "bison_parser.cpp" +#line 2702 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2705 "bison_parser.cpp" +#line 2708 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2711 "bison_parser.cpp" +#line 2714 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2717 "bison_parser.cpp" +#line 2720 "bison_parser.cpp" break; case YYSYMBOL_opt_window: /* opt_window */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).window_description)); } -#line 2723 "bison_parser.cpp" +#line 2726 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ @@ -2732,151 +2735,151 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2736 "bison_parser.cpp" +#line 2739 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2742 "bison_parser.cpp" +#line 2745 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ #line 181 "bison_parser.y" { } -#line 2748 "bison_parser.cpp" +#line 2751 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2754 "bison_parser.cpp" +#line 2757 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2760 "bison_parser.cpp" +#line 2763 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2766 "bison_parser.cpp" +#line 2769 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ #line 181 "bison_parser.y" { } -#line 2772 "bison_parser.cpp" +#line 2775 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ #line 181 "bison_parser.y" { } -#line 2778 "bison_parser.cpp" +#line 2781 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ #line 181 "bison_parser.y" { } -#line 2784 "bison_parser.cpp" +#line 2787 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2790 "bison_parser.cpp" +#line 2793 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2796 "bison_parser.cpp" +#line 2799 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2802 "bison_parser.cpp" +#line 2805 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2808 "bison_parser.cpp" +#line 2811 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2814 "bison_parser.cpp" +#line 2817 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2820 "bison_parser.cpp" +#line 2823 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2826 "bison_parser.cpp" +#line 2829 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2832 "bison_parser.cpp" +#line 2835 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2838 "bison_parser.cpp" +#line 2841 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2844 "bison_parser.cpp" +#line 2847 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2850 "bison_parser.cpp" +#line 2853 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2856 "bison_parser.cpp" +#line 2859 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2862 "bison_parser.cpp" +#line 2865 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2868 "bison_parser.cpp" +#line 2871 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2874 "bison_parser.cpp" +#line 2877 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2880 "bison_parser.cpp" +#line 2883 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ @@ -2889,19 +2892,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2893 "bison_parser.cpp" +#line 2896 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2899 "bison_parser.cpp" +#line 2902 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2905 "bison_parser.cpp" +#line 2908 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2910,109 +2913,109 @@ yydestruct (const char *yymsg, free(((*yyvaluep).table_name).name); free(((*yyvaluep).table_name).schema); } -#line 2914 "bison_parser.cpp" +#line 2917 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ #line 194 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2920 "bison_parser.cpp" +#line 2923 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2926 "bison_parser.cpp" +#line 2929 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2932 "bison_parser.cpp" +#line 2935 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2938 "bison_parser.cpp" +#line 2941 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2944 "bison_parser.cpp" +#line 2947 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2950 "bison_parser.cpp" +#line 2953 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2956 "bison_parser.cpp" +#line 2959 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2962 "bison_parser.cpp" +#line 2965 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ #line 181 "bison_parser.y" { } -#line 2968 "bison_parser.cpp" +#line 2971 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ #line 181 "bison_parser.y" { } -#line 2974 "bison_parser.cpp" +#line 2977 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2980 "bison_parser.cpp" +#line 2983 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2986 "bison_parser.cpp" +#line 2989 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2992 "bison_parser.cpp" +#line 2995 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2998 "bison_parser.cpp" +#line 3001 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 3004 "bison_parser.cpp" +#line 3007 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ #line 181 "bison_parser.y" { } -#line 3010 "bison_parser.cpp" +#line 3013 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 204 "bison_parser.y" +#line 207 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 3016 "bison_parser.cpp" +#line 3019 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ @@ -3025,7 +3028,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 3029 "bison_parser.cpp" +#line 3032 "bison_parser.cpp" break; default: @@ -3133,7 +3136,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3137 "bison_parser.cpp" +#line 3140 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3344,7 +3347,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 340 "bison_parser.y" +#line 343 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3362,236 +3365,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3366 "bison_parser.cpp" +#line 3369 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 359 "bison_parser.y" +#line 362 "bison_parser.y" { (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 3377 "bison_parser.cpp" +#line 3380 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 365 "bison_parser.y" +#line 368 "bison_parser.y" { (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 3388 "bison_parser.cpp" +#line 3391 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 372 "bison_parser.y" +#line 375 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3397 "bison_parser.cpp" +#line 3400 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 376 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3406 "bison_parser.cpp" +#line 3409 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 380 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3412 "bison_parser.cpp" +#line 3415 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 381 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3418 "bison_parser.cpp" +#line 3421 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 382 "bison_parser.y" +#line 385 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3424 "bison_parser.cpp" +#line 3427 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 384 "bison_parser.y" +#line 387 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3430 "bison_parser.cpp" +#line 3433 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 385 "bison_parser.y" +#line 388 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3436 "bison_parser.cpp" +#line 3439 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 386 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3442 "bison_parser.cpp" +#line 3445 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 387 "bison_parser.y" +#line 390 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3448 "bison_parser.cpp" +#line 3451 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 388 "bison_parser.y" +#line 391 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3454 "bison_parser.cpp" +#line 3457 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 389 "bison_parser.y" +#line 392 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3460 "bison_parser.cpp" +#line 3463 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 390 "bison_parser.y" +#line 393 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3466 "bison_parser.cpp" +#line 3469 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 391 "bison_parser.y" +#line 394 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3472 "bison_parser.cpp" +#line 3475 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 392 "bison_parser.y" +#line 395 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3478 "bison_parser.cpp" +#line 3481 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 393 "bison_parser.y" +#line 396 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3484 "bison_parser.cpp" +#line 3487 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 399 "bison_parser.y" +#line 402 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3490 "bison_parser.cpp" +#line 3493 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 400 "bison_parser.y" +#line 403 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3496 "bison_parser.cpp" +#line 3499 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 402 "bison_parser.y" +#line 405 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3505 "bison_parser.cpp" +#line 3508 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 406 "bison_parser.y" +#line 409 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3514 "bison_parser.cpp" +#line 3517 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 411 "bison_parser.y" +#line 414 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3523 "bison_parser.cpp" +#line 3526 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' extended_literal_list ')' */ -#line 415 "bison_parser.y" +#line 418 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3533 "bison_parser.cpp" +#line 3536 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 425 "bison_parser.y" +#line 428 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3539 "bison_parser.cpp" +#line 3542 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 426 "bison_parser.y" +#line 429 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3545 "bison_parser.cpp" +#line 3548 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 427 "bison_parser.y" +#line 430 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3551 "bison_parser.cpp" +#line 3554 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 435 "bison_parser.y" +#line 438 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3561 "bison_parser.cpp" +#line 3564 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 443 "bison_parser.y" +#line 446 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3570 "bison_parser.cpp" +#line 3573 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_extended_literal_list ')' */ -#line 447 "bison_parser.y" +#line 450 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3580 "bison_parser.cpp" +#line 3583 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 459 "bison_parser.y" +#line 462 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (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 3591 "bison_parser.cpp" +#line 3594 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_import_export_options opt_where */ -#line 465 "bison_parser.y" +#line 468 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_export_option_t)->format); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3608,11 +3611,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].import_export_option_t); } -#line 3612 "bison_parser.cpp" +#line 3615 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 482 "bison_parser.y" +#line 485 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3627,35 +3630,35 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3631 "bison_parser.cpp" +#line 3634 "bison_parser.cpp" break; case 38: /* file_path: STRING */ -#line 497 "bison_parser.y" +#line 500 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 3637 "bison_parser.cpp" +#line 3640 "bison_parser.cpp" break; case 39: /* opt_import_export_options: WITH '(' import_export_options ')' */ -#line 499 "bison_parser.y" +#line 502 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3643 "bison_parser.cpp" +#line 3646 "bison_parser.cpp" break; case 40: /* opt_import_export_options: '(' import_export_options ')' */ -#line 500 "bison_parser.y" +#line 503 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3649 "bison_parser.cpp" +#line 3652 "bison_parser.cpp" break; case 41: /* opt_import_export_options: %empty */ -#line 501 "bison_parser.y" +#line 504 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; } -#line 3655 "bison_parser.cpp" +#line 3658 "bison_parser.cpp" break; case 42: /* import_export_options: import_export_options ',' FORMAT file_type */ -#line 503 "bison_parser.y" +#line 506 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->format != kImportAuto) { delete (yyvsp[-3].import_export_option_t); @@ -3670,20 +3673,20 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->format = (yyvsp[0].import_type_t); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3674 "bison_parser.cpp" +#line 3677 "bison_parser.cpp" break; case 43: /* import_export_options: FORMAT file_type */ -#line 517 "bison_parser.y" +#line 520 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->format = (yyvsp[0].import_type_t); } -#line 3683 "bison_parser.cpp" +#line 3686 "bison_parser.cpp" break; case 44: /* import_export_options: import_export_options ',' ENCODING STRING */ -#line 521 "bison_parser.y" +#line 524 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->encoding) { delete (yyvsp[-3].import_export_option_t); @@ -3694,20 +3697,20 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->encoding = (yyvsp[0].sval); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3698 "bison_parser.cpp" +#line 3701 "bison_parser.cpp" break; case 45: /* import_export_options: ENCODING STRING */ -#line 531 "bison_parser.y" +#line 534 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->encoding = (yyvsp[0].sval); } -#line 3707 "bison_parser.cpp" +#line 3710 "bison_parser.cpp" break; case 46: /* import_export_options: import_export_options ',' csv_option */ -#line 535 "bison_parser.y" +#line 538 "bison_parser.y" { if ((yyvsp[-2].import_export_option_t)->format != kImportAuto && (yyvsp[-2].import_export_option_t)->format != kImportCSV) { delete (yyvsp[-2].import_export_option_t); @@ -3732,11 +3735,11 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].csv_option_t); (yyval.import_export_option_t) = (yyvsp[-2].import_export_option_t); } -#line 3736 "bison_parser.cpp" +#line 3739 "bison_parser.cpp" break; case 47: /* import_export_options: csv_option */ -#line 559 "bison_parser.y" +#line 562 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->csv_options = new CsvOptions{}; @@ -3744,11 +3747,11 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].csv_option_t); } -#line 3748 "bison_parser.cpp" +#line 3751 "bison_parser.cpp" break; case 48: /* csv_option: IDENTIFIER STRING */ -#line 567 "bison_parser.y" +#line 570 "bison_parser.y" { if (strcasecmp((yyvsp[-1].sval), "DELIMITER") == 0) { (yyval.csv_option_t) = new std::pair(CsvOptionType::Delimiter, (yyvsp[0].sval)); @@ -3762,17 +3765,17 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[-1].sval)); } -#line 3766 "bison_parser.cpp" +#line 3769 "bison_parser.cpp" break; case 49: /* csv_option: NULL STRING */ -#line 580 "bison_parser.y" +#line 583 "bison_parser.y" { (yyval.csv_option_t) = new std::pair(CsvOptionType::Null, (yyvsp[0].sval)); } -#line 3772 "bison_parser.cpp" +#line 3775 "bison_parser.cpp" break; case 50: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 587 "bison_parser.y" +#line 590 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3788,11 +3791,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3792 "bison_parser.cpp" +#line 3795 "bison_parser.cpp" break; case 51: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 602 "bison_parser.y" +#line 605 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3807,37 +3810,37 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3811 "bison_parser.cpp" +#line 3814 "bison_parser.cpp" break; case 52: /* show_statement: SHOW TABLES */ -#line 622 "bison_parser.y" +#line 625 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3817 "bison_parser.cpp" +#line 3820 "bison_parser.cpp" break; case 53: /* show_statement: SHOW COLUMNS table_name */ -#line 623 "bison_parser.y" +#line 626 "bison_parser.y" { (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 3827 "bison_parser.cpp" +#line 3830 "bison_parser.cpp" break; case 54: /* show_statement: DESCRIBE table_name */ -#line 628 "bison_parser.y" +#line 631 "bison_parser.y" { (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 3837 "bison_parser.cpp" +#line 3840 "bison_parser.cpp" break; case 55: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 639 "bison_parser.y" +#line 642 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3851,11 +3854,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3855 "bison_parser.cpp" +#line 3858 "bison_parser.cpp" break; case 56: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 652 "bison_parser.y" +#line 655 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3868,11 +3871,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3872 "bison_parser.cpp" +#line 3875 "bison_parser.cpp" break; case 57: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 664 "bison_parser.y" +#line 667 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3880,11 +3883,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3884 "bison_parser.cpp" +#line 3887 "bison_parser.cpp" break; case 58: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 671 "bison_parser.y" +#line 674 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3892,11 +3895,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3896 "bison_parser.cpp" +#line 3899 "bison_parser.cpp" break; case 59: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 678 "bison_parser.y" +#line 681 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3905,53 +3908,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3909 "bison_parser.cpp" +#line 3912 "bison_parser.cpp" break; case 60: /* opt_not_exists: IF NOT EXISTS */ -#line 687 "bison_parser.y" +#line 690 "bison_parser.y" { (yyval.bval) = true; } -#line 3915 "bison_parser.cpp" +#line 3918 "bison_parser.cpp" break; case 61: /* opt_not_exists: %empty */ -#line 688 "bison_parser.y" +#line 691 "bison_parser.y" { (yyval.bval) = false; } -#line 3921 "bison_parser.cpp" +#line 3924 "bison_parser.cpp" break; case 62: /* table_elem_commalist: table_elem */ -#line 690 "bison_parser.y" +#line 693 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3930 "bison_parser.cpp" +#line 3933 "bison_parser.cpp" break; case 63: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 694 "bison_parser.y" +#line 697 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3939 "bison_parser.cpp" +#line 3942 "bison_parser.cpp" break; case 64: /* table_elem: column_def */ -#line 699 "bison_parser.y" +#line 702 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3945 "bison_parser.cpp" +#line 3948 "bison_parser.cpp" break; case 65: /* table_elem: table_constraint */ -#line 700 "bison_parser.y" +#line 703 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3951 "bison_parser.cpp" +#line 3954 "bison_parser.cpp" break; case 66: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 702 "bison_parser.y" +#line 705 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3959,192 +3962,192 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3963 "bison_parser.cpp" +#line 3966 "bison_parser.cpp" break; case 67: /* column_type: BIGINT */ -#line 710 "bison_parser.y" +#line 713 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3969 "bison_parser.cpp" +#line 3972 "bison_parser.cpp" break; case 68: /* column_type: BOOLEAN */ -#line 711 "bison_parser.y" +#line 714 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3975 "bison_parser.cpp" +#line 3978 "bison_parser.cpp" break; case 69: /* column_type: CHAR '(' INTVAL ')' */ -#line 712 "bison_parser.y" +#line 715 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3981 "bison_parser.cpp" +#line 3984 "bison_parser.cpp" break; case 70: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 713 "bison_parser.y" +#line 716 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3987 "bison_parser.cpp" +#line 3990 "bison_parser.cpp" break; case 71: /* column_type: DATE */ -#line 714 "bison_parser.y" +#line 717 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3993 "bison_parser.cpp" +#line 3996 "bison_parser.cpp" break; case 72: /* column_type: DATETIME */ -#line 715 "bison_parser.y" +#line 718 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3999 "bison_parser.cpp" +#line 4002 "bison_parser.cpp" break; case 73: /* column_type: DECIMAL opt_decimal_specification */ -#line 716 "bison_parser.y" +#line 719 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 4008 "bison_parser.cpp" +#line 4011 "bison_parser.cpp" break; case 74: /* column_type: DOUBLE */ -#line 720 "bison_parser.y" +#line 723 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 4014 "bison_parser.cpp" +#line 4017 "bison_parser.cpp" break; case 75: /* column_type: FLOAT */ -#line 721 "bison_parser.y" +#line 724 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 4020 "bison_parser.cpp" +#line 4023 "bison_parser.cpp" break; case 76: /* column_type: INT */ -#line 722 "bison_parser.y" +#line 725 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4026 "bison_parser.cpp" +#line 4029 "bison_parser.cpp" break; case 77: /* column_type: INTEGER */ -#line 723 "bison_parser.y" +#line 726 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 4032 "bison_parser.cpp" +#line 4035 "bison_parser.cpp" break; case 78: /* column_type: LONG */ -#line 724 "bison_parser.y" +#line 727 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 4038 "bison_parser.cpp" +#line 4041 "bison_parser.cpp" break; case 79: /* column_type: REAL */ -#line 725 "bison_parser.y" +#line 728 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 4044 "bison_parser.cpp" +#line 4047 "bison_parser.cpp" break; case 80: /* column_type: SMALLINT */ -#line 726 "bison_parser.y" +#line 729 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 4050 "bison_parser.cpp" +#line 4053 "bison_parser.cpp" break; case 81: /* column_type: TEXT */ -#line 727 "bison_parser.y" +#line 730 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 4056 "bison_parser.cpp" +#line 4059 "bison_parser.cpp" break; case 82: /* column_type: TIME opt_time_precision */ -#line 728 "bison_parser.y" +#line 731 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 4062 "bison_parser.cpp" +#line 4065 "bison_parser.cpp" break; case 83: /* column_type: TIMESTAMP */ -#line 729 "bison_parser.y" +#line 732 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 4068 "bison_parser.cpp" +#line 4071 "bison_parser.cpp" break; case 84: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 730 "bison_parser.y" +#line 733 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 4074 "bison_parser.cpp" +#line 4077 "bison_parser.cpp" break; case 85: /* opt_time_precision: '(' INTVAL ')' */ -#line 732 "bison_parser.y" +#line 735 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 4080 "bison_parser.cpp" +#line 4083 "bison_parser.cpp" break; case 86: /* opt_time_precision: %empty */ -#line 733 "bison_parser.y" +#line 736 "bison_parser.y" { (yyval.ival) = 0; } -#line 4086 "bison_parser.cpp" +#line 4089 "bison_parser.cpp" break; case 87: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 735 "bison_parser.y" +#line 738 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 4092 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; case 88: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 736 "bison_parser.y" +#line 739 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 4098 "bison_parser.cpp" +#line 4101 "bison_parser.cpp" break; case 89: /* opt_decimal_specification: %empty */ -#line 737 "bison_parser.y" +#line 740 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 4104 "bison_parser.cpp" +#line 4107 "bison_parser.cpp" break; case 90: /* opt_column_constraints: column_constraints */ -#line 739 "bison_parser.y" +#line 742 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4110 "bison_parser.cpp" +#line 4113 "bison_parser.cpp" break; case 91: /* opt_column_constraints: %empty */ -#line 740 "bison_parser.y" +#line 743 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4116 "bison_parser.cpp" +#line 4119 "bison_parser.cpp" break; case 92: /* column_constraints: column_constraint */ -#line 742 "bison_parser.y" +#line 745 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4125 "bison_parser.cpp" +#line 4128 "bison_parser.cpp" break; case 93: /* column_constraints: column_constraints column_constraint */ -#line 746 "bison_parser.y" +#line 749 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4134 "bison_parser.cpp" +#line 4137 "bison_parser.cpp" break; case 94: /* column_constraints: references_spec */ -#line 750 "bison_parser.y" +#line 753 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4144 "bison_parser.cpp" +#line 4147 "bison_parser.cpp" break; case 95: /* column_constraints: column_constraints references_spec */ -#line 755 "bison_parser.y" +#line 758 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4152,159 +4155,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4156 "bison_parser.cpp" +#line 4159 "bison_parser.cpp" break; case 96: /* column_constraint: PRIMARY KEY */ -#line 763 "bison_parser.y" +#line 766 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4162 "bison_parser.cpp" +#line 4165 "bison_parser.cpp" break; case 97: /* column_constraint: UNIQUE */ -#line 764 "bison_parser.y" +#line 767 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4168 "bison_parser.cpp" +#line 4171 "bison_parser.cpp" break; case 98: /* column_constraint: NULL */ -#line 765 "bison_parser.y" +#line 768 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4174 "bison_parser.cpp" +#line 4177 "bison_parser.cpp" break; case 99: /* column_constraint: NOT NULL */ -#line 766 "bison_parser.y" +#line 769 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4180 "bison_parser.cpp" +#line 4183 "bison_parser.cpp" break; case 100: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 768 "bison_parser.y" +#line 771 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4186 "bison_parser.cpp" +#line 4189 "bison_parser.cpp" break; case 101: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 769 "bison_parser.y" +#line 772 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4192 "bison_parser.cpp" +#line 4195 "bison_parser.cpp" break; case 102: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 770 "bison_parser.y" +#line 773 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4198 "bison_parser.cpp" +#line 4201 "bison_parser.cpp" break; case 103: /* references_spec: REFERENCES table_name opt_column_list */ -#line 772 "bison_parser.y" +#line 775 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4204 "bison_parser.cpp" +#line 4207 "bison_parser.cpp" break; case 104: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 780 "bison_parser.y" +#line 783 "bison_parser.y" { (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 4215 "bison_parser.cpp" +#line 4218 "bison_parser.cpp" break; case 105: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 786 "bison_parser.y" +#line 789 "bison_parser.y" { (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 4226 "bison_parser.cpp" +#line 4229 "bison_parser.cpp" break; case 106: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 792 "bison_parser.y" +#line 795 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4236 "bison_parser.cpp" +#line 4239 "bison_parser.cpp" break; case 107: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 798 "bison_parser.y" +#line 801 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4246 "bison_parser.cpp" +#line 4249 "bison_parser.cpp" break; case 108: /* opt_exists: IF EXISTS */ -#line 804 "bison_parser.y" +#line 807 "bison_parser.y" { (yyval.bval) = true; } -#line 4252 "bison_parser.cpp" +#line 4255 "bison_parser.cpp" break; case 109: /* opt_exists: %empty */ -#line 805 "bison_parser.y" +#line 808 "bison_parser.y" { (yyval.bval) = false; } -#line 4258 "bison_parser.cpp" +#line 4261 "bison_parser.cpp" break; case 110: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 812 "bison_parser.y" +#line 815 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 4268 "bison_parser.cpp" +#line 4271 "bison_parser.cpp" break; case 111: /* alter_action: drop_action */ -#line 818 "bison_parser.y" +#line 821 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4274 "bison_parser.cpp" +#line 4277 "bison_parser.cpp" break; case 112: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 820 "bison_parser.y" +#line 823 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4283 "bison_parser.cpp" +#line 4286 "bison_parser.cpp" break; case 113: /* delete_statement: DELETE FROM table_name opt_where */ -#line 830 "bison_parser.y" +#line 833 "bison_parser.y" { (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 4294 "bison_parser.cpp" +#line 4297 "bison_parser.cpp" break; case 114: /* truncate_statement: TRUNCATE table_name */ -#line 837 "bison_parser.y" +#line 840 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 4304 "bison_parser.cpp" +#line 4307 "bison_parser.cpp" break; case 115: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 848 "bison_parser.y" +#line 851 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4312,11 +4315,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4316 "bison_parser.cpp" +#line 4319 "bison_parser.cpp" break; case 116: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 855 "bison_parser.y" +#line 858 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4324,80 +4327,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4328 "bison_parser.cpp" +#line 4331 "bison_parser.cpp" break; case 117: /* opt_column_list: '(' ident_commalist ')' */ -#line 863 "bison_parser.y" +#line 866 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4334 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; case 118: /* opt_column_list: %empty */ -#line 864 "bison_parser.y" +#line 867 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4340 "bison_parser.cpp" +#line 4343 "bison_parser.cpp" break; case 119: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 871 "bison_parser.y" +#line 874 "bison_parser.y" { (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 4351 "bison_parser.cpp" +#line 4354 "bison_parser.cpp" break; case 120: /* update_clause_commalist: update_clause */ -#line 878 "bison_parser.y" +#line 881 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4360 "bison_parser.cpp" +#line 4363 "bison_parser.cpp" break; case 121: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 882 "bison_parser.y" +#line 885 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4369 "bison_parser.cpp" +#line 4372 "bison_parser.cpp" break; case 122: /* update_clause: IDENTIFIER '=' expr */ -#line 887 "bison_parser.y" +#line 890 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4379 "bison_parser.cpp" +#line 4382 "bison_parser.cpp" break; case 123: /* select_statement: opt_with_clause select_with_paren */ -#line 897 "bison_parser.y" +#line 900 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4388 "bison_parser.cpp" +#line 4391 "bison_parser.cpp" break; case 124: /* select_statement: opt_with_clause select_no_paren */ -#line 901 "bison_parser.y" +#line 904 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4397 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; case 125: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 905 "bison_parser.y" +#line 908 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4409,17 +4412,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4413 "bison_parser.cpp" +#line 4416 "bison_parser.cpp" break; case 128: /* select_within_set_operation_no_parentheses: select_clause */ -#line 919 "bison_parser.y" +#line 922 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4419 "bison_parser.cpp" +#line 4422 "bison_parser.cpp" break; case 129: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 920 "bison_parser.y" +#line 923 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4428,23 +4431,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 4432 "bison_parser.cpp" +#line 4435 "bison_parser.cpp" break; case 130: /* select_with_paren: '(' select_no_paren ')' */ -#line 929 "bison_parser.y" +#line 932 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4438 "bison_parser.cpp" +#line 4441 "bison_parser.cpp" break; case 131: /* select_with_paren: '(' select_with_paren ')' */ -#line 930 "bison_parser.y" +#line 933 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4444 "bison_parser.cpp" +#line 4447 "bison_parser.cpp" break; case 132: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 932 "bison_parser.y" +#line 935 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4459,11 +4462,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4463 "bison_parser.cpp" +#line 4466 "bison_parser.cpp" break; case 133: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 946 "bison_parser.y" +#line 949 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4475,59 +4478,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4479 "bison_parser.cpp" +#line 4482 "bison_parser.cpp" break; case 134: /* set_operator: set_type opt_all */ -#line 958 "bison_parser.y" +#line 961 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4488 "bison_parser.cpp" +#line 4491 "bison_parser.cpp" break; case 135: /* set_type: UNION */ -#line 963 "bison_parser.y" +#line 966 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4497 "bison_parser.cpp" +#line 4500 "bison_parser.cpp" break; case 136: /* set_type: INTERSECT */ -#line 967 "bison_parser.y" +#line 970 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4506 "bison_parser.cpp" +#line 4509 "bison_parser.cpp" break; case 137: /* set_type: EXCEPT */ -#line 971 "bison_parser.y" +#line 974 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4515 "bison_parser.cpp" +#line 4518 "bison_parser.cpp" break; case 138: /* opt_all: ALL */ -#line 976 "bison_parser.y" +#line 979 "bison_parser.y" { (yyval.bval) = true; } -#line 4521 "bison_parser.cpp" +#line 4524 "bison_parser.cpp" break; case 139: /* opt_all: %empty */ -#line 977 "bison_parser.y" +#line 980 "bison_parser.y" { (yyval.bval) = false; } -#line 4527 "bison_parser.cpp" +#line 4530 "bison_parser.cpp" break; case 140: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 979 "bison_parser.y" +#line 982 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4537,141 +4540,141 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4541 "bison_parser.cpp" +#line 4544 "bison_parser.cpp" break; case 141: /* opt_distinct: DISTINCT */ -#line 989 "bison_parser.y" +#line 992 "bison_parser.y" { (yyval.bval) = true; } -#line 4547 "bison_parser.cpp" +#line 4550 "bison_parser.cpp" break; case 142: /* opt_distinct: %empty */ -#line 990 "bison_parser.y" +#line 993 "bison_parser.y" { (yyval.bval) = false; } -#line 4553 "bison_parser.cpp" +#line 4556 "bison_parser.cpp" break; case 144: /* opt_from_clause: from_clause */ -#line 994 "bison_parser.y" +#line 997 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4559 "bison_parser.cpp" +#line 4562 "bison_parser.cpp" break; case 145: /* opt_from_clause: %empty */ -#line 995 "bison_parser.y" +#line 998 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4565 "bison_parser.cpp" +#line 4568 "bison_parser.cpp" break; case 146: /* from_clause: FROM table_ref */ -#line 997 "bison_parser.y" +#line 1000 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4571 "bison_parser.cpp" +#line 4574 "bison_parser.cpp" break; case 147: /* opt_where: WHERE expr */ -#line 999 "bison_parser.y" +#line 1002 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4577 "bison_parser.cpp" +#line 4580 "bison_parser.cpp" break; case 148: /* opt_where: %empty */ -#line 1000 "bison_parser.y" +#line 1003 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4583 "bison_parser.cpp" +#line 4586 "bison_parser.cpp" break; case 149: /* opt_group: GROUP BY expr_list opt_having */ -#line 1002 "bison_parser.y" +#line 1005 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4593 "bison_parser.cpp" +#line 4596 "bison_parser.cpp" break; case 150: /* opt_group: %empty */ -#line 1007 "bison_parser.y" +#line 1010 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4599 "bison_parser.cpp" +#line 4602 "bison_parser.cpp" break; case 151: /* opt_having: HAVING expr */ -#line 1009 "bison_parser.y" +#line 1012 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4605 "bison_parser.cpp" +#line 4608 "bison_parser.cpp" break; case 152: /* opt_having: %empty */ -#line 1010 "bison_parser.y" +#line 1013 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4611 "bison_parser.cpp" +#line 4614 "bison_parser.cpp" break; case 153: /* opt_order: ORDER BY order_list */ -#line 1012 "bison_parser.y" +#line 1015 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4617 "bison_parser.cpp" +#line 4620 "bison_parser.cpp" break; case 154: /* opt_order: %empty */ -#line 1013 "bison_parser.y" +#line 1016 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4623 "bison_parser.cpp" +#line 4626 "bison_parser.cpp" break; case 155: /* order_list: order_desc */ -#line 1015 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4632 "bison_parser.cpp" +#line 4635 "bison_parser.cpp" break; case 156: /* order_list: order_list ',' order_desc */ -#line 1019 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4641 "bison_parser.cpp" +#line 4644 "bison_parser.cpp" break; case 157: /* order_desc: expr opt_order_type opt_null_ordering */ -#line 1024 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[-1].order_type), (yyvsp[-2].expr), (yyvsp[0].null_ordering_t)); } -#line 4647 "bison_parser.cpp" +#line 4650 "bison_parser.cpp" break; case 158: /* opt_order_type: ASC */ -#line 1026 "bison_parser.y" +#line 1029 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4653 "bison_parser.cpp" +#line 4656 "bison_parser.cpp" break; case 159: /* opt_order_type: DESC */ -#line 1027 "bison_parser.y" +#line 1030 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4659 "bison_parser.cpp" +#line 4662 "bison_parser.cpp" break; case 160: /* opt_order_type: %empty */ -#line 1028 "bison_parser.y" +#line 1031 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4665 "bison_parser.cpp" +#line 4668 "bison_parser.cpp" break; case 161: /* opt_null_ordering: %empty */ -#line 1030 "bison_parser.y" +#line 1033 "bison_parser.y" { (yyval.null_ordering_t) = NullOrdering::Undefined; } -#line 4671 "bison_parser.cpp" +#line 4674 "bison_parser.cpp" break; case 162: /* opt_null_ordering: IDENTIFIER IDENTIFIER */ -#line 1031 "bison_parser.y" +#line 1034 "bison_parser.y" { auto null_ordering = NullOrdering::Undefined; if (strcasecmp((yyvsp[-1].sval), "nulls") == 0) { @@ -4691,115 +4694,115 @@ YYLTYPE yylloc = yyloc_default; (yyval.null_ordering_t) = null_ordering; } -#line 4695 "bison_parser.cpp" +#line 4698 "bison_parser.cpp" break; case 163: /* opt_top: TOP int_literal */ -#line 1053 "bison_parser.y" +#line 1056 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4701 "bison_parser.cpp" +#line 4704 "bison_parser.cpp" break; case 164: /* opt_top: %empty */ -#line 1054 "bison_parser.y" +#line 1057 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4707 "bison_parser.cpp" +#line 4710 "bison_parser.cpp" break; case 165: /* opt_limit: LIMIT expr */ -#line 1056 "bison_parser.y" +#line 1059 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4713 "bison_parser.cpp" +#line 4716 "bison_parser.cpp" break; case 166: /* opt_limit: OFFSET expr */ -#line 1057 "bison_parser.y" +#line 1060 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4719 "bison_parser.cpp" +#line 4722 "bison_parser.cpp" break; case 167: /* opt_limit: LIMIT expr OFFSET expr */ -#line 1058 "bison_parser.y" +#line 1061 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4725 "bison_parser.cpp" +#line 4728 "bison_parser.cpp" break; case 168: /* opt_limit: LIMIT ALL */ -#line 1059 "bison_parser.y" +#line 1062 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4731 "bison_parser.cpp" +#line 4734 "bison_parser.cpp" break; case 169: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 1060 "bison_parser.y" +#line 1063 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4737 "bison_parser.cpp" +#line 4740 "bison_parser.cpp" break; case 170: /* opt_limit: %empty */ -#line 1061 "bison_parser.y" +#line 1064 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4743 "bison_parser.cpp" +#line 4746 "bison_parser.cpp" break; case 171: /* expr_list: expr_alias */ -#line 1066 "bison_parser.y" +#line 1069 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4752 "bison_parser.cpp" +#line 4755 "bison_parser.cpp" break; case 172: /* expr_list: expr_list ',' expr_alias */ -#line 1070 "bison_parser.y" +#line 1073 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4761 "bison_parser.cpp" +#line 4764 "bison_parser.cpp" break; case 173: /* opt_extended_literal_list: extended_literal_list */ -#line 1076 "bison_parser.y" +#line 1079 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4767 "bison_parser.cpp" +#line 4770 "bison_parser.cpp" break; case 174: /* opt_extended_literal_list: %empty */ -#line 1077 "bison_parser.y" +#line 1080 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4773 "bison_parser.cpp" +#line 4776 "bison_parser.cpp" break; case 175: /* extended_literal_list: casted_extended_literal */ -#line 1079 "bison_parser.y" +#line 1082 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4782 "bison_parser.cpp" +#line 4785 "bison_parser.cpp" break; case 176: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 1083 "bison_parser.y" +#line 1086 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4791 "bison_parser.cpp" +#line 4794 "bison_parser.cpp" break; case 178: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 1088 "bison_parser.y" +#line 1091 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4799 "bison_parser.cpp" +#line 4802 "bison_parser.cpp" break; case 179: /* extended_literal: literal */ -#line 1092 "bison_parser.y" +#line 1095 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4808,23 +4811,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4812 "bison_parser.cpp" +#line 4815 "bison_parser.cpp" break; case 180: /* extended_literal: '-' num_literal */ -#line 1100 "bison_parser.y" +#line 1103 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4818 "bison_parser.cpp" +#line 4821 "bison_parser.cpp" break; case 181: /* extended_literal: '-' interval_literal */ -#line 1101 "bison_parser.y" +#line 1104 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4824 "bison_parser.cpp" +#line 4827 "bison_parser.cpp" break; case 182: /* expr_alias: expr opt_alias */ -#line 1103 "bison_parser.y" +#line 1106 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4833,507 +4836,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4837 "bison_parser.cpp" +#line 4840 "bison_parser.cpp" break; case 188: /* operand: '(' expr ')' */ -#line 1114 "bison_parser.y" +#line 1117 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4843 "bison_parser.cpp" +#line 4846 "bison_parser.cpp" break; case 198: /* operand: '(' select_no_paren ')' */ -#line 1116 "bison_parser.y" +#line 1119 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4851 "bison_parser.cpp" +#line 4854 "bison_parser.cpp" break; case 201: /* unary_expr: '-' operand */ -#line 1122 "bison_parser.y" +#line 1125 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4857 "bison_parser.cpp" +#line 4860 "bison_parser.cpp" break; case 202: /* unary_expr: NOT operand */ -#line 1123 "bison_parser.y" +#line 1126 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4863 "bison_parser.cpp" +#line 4866 "bison_parser.cpp" break; case 203: /* unary_expr: operand ISNULL */ -#line 1124 "bison_parser.y" +#line 1127 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4869 "bison_parser.cpp" +#line 4872 "bison_parser.cpp" break; case 204: /* unary_expr: operand IS NULL */ -#line 1125 "bison_parser.y" +#line 1128 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4875 "bison_parser.cpp" +#line 4878 "bison_parser.cpp" break; case 205: /* unary_expr: operand IS NOT NULL */ -#line 1126 "bison_parser.y" +#line 1129 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4881 "bison_parser.cpp" +#line 4884 "bison_parser.cpp" break; case 207: /* binary_expr: operand '-' operand */ -#line 1128 "bison_parser.y" +#line 1131 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4887 "bison_parser.cpp" +#line 4890 "bison_parser.cpp" break; case 208: /* binary_expr: operand '+' operand */ -#line 1129 "bison_parser.y" +#line 1132 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4893 "bison_parser.cpp" +#line 4896 "bison_parser.cpp" break; case 209: /* binary_expr: operand '/' operand */ -#line 1130 "bison_parser.y" +#line 1133 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4899 "bison_parser.cpp" +#line 4902 "bison_parser.cpp" break; case 210: /* binary_expr: operand '*' operand */ -#line 1131 "bison_parser.y" +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4905 "bison_parser.cpp" +#line 4908 "bison_parser.cpp" break; case 211: /* binary_expr: operand '%' operand */ -#line 1132 "bison_parser.y" +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4911 "bison_parser.cpp" +#line 4914 "bison_parser.cpp" break; case 212: /* binary_expr: operand '^' operand */ -#line 1133 "bison_parser.y" +#line 1136 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4917 "bison_parser.cpp" +#line 4920 "bison_parser.cpp" break; case 213: /* binary_expr: operand LIKE operand */ -#line 1134 "bison_parser.y" +#line 1137 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4923 "bison_parser.cpp" +#line 4926 "bison_parser.cpp" break; case 214: /* binary_expr: operand NOT LIKE operand */ -#line 1135 "bison_parser.y" +#line 1138 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4929 "bison_parser.cpp" +#line 4932 "bison_parser.cpp" break; case 215: /* binary_expr: operand ILIKE operand */ -#line 1136 "bison_parser.y" +#line 1139 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4935 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; case 216: /* binary_expr: operand CONCAT operand */ -#line 1137 "bison_parser.y" +#line 1140 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4941 "bison_parser.cpp" +#line 4944 "bison_parser.cpp" break; case 217: /* logic_expr: expr AND expr */ -#line 1139 "bison_parser.y" +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4947 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; case 218: /* logic_expr: expr OR expr */ -#line 1140 "bison_parser.y" +#line 1143 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4953 "bison_parser.cpp" +#line 4956 "bison_parser.cpp" break; case 219: /* in_expr: operand IN '(' expr_list ')' */ -#line 1142 "bison_parser.y" +#line 1145 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4959 "bison_parser.cpp" +#line 4962 "bison_parser.cpp" break; case 220: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1143 "bison_parser.y" +#line 1146 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4965 "bison_parser.cpp" +#line 4968 "bison_parser.cpp" break; case 221: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1144 "bison_parser.y" +#line 1147 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4971 "bison_parser.cpp" +#line 4974 "bison_parser.cpp" break; case 222: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1145 "bison_parser.y" +#line 1148 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4977 "bison_parser.cpp" +#line 4980 "bison_parser.cpp" break; case 223: /* case_expr: CASE expr case_list END */ -#line 1149 "bison_parser.y" +#line 1152 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4983 "bison_parser.cpp" +#line 4986 "bison_parser.cpp" break; case 224: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1150 "bison_parser.y" +#line 1153 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4989 "bison_parser.cpp" +#line 4992 "bison_parser.cpp" break; case 225: /* case_expr: CASE case_list END */ -#line 1151 "bison_parser.y" +#line 1154 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4995 "bison_parser.cpp" +#line 4998 "bison_parser.cpp" break; case 226: /* case_expr: CASE case_list ELSE expr END */ -#line 1152 "bison_parser.y" +#line 1155 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 5001 "bison_parser.cpp" +#line 5004 "bison_parser.cpp" break; case 227: /* case_list: WHEN expr THEN expr */ -#line 1154 "bison_parser.y" +#line 1157 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 5007 "bison_parser.cpp" +#line 5010 "bison_parser.cpp" break; case 228: /* case_list: case_list WHEN expr THEN expr */ -#line 1155 "bison_parser.y" +#line 1158 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 5013 "bison_parser.cpp" +#line 5016 "bison_parser.cpp" break; case 229: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1157 "bison_parser.y" +#line 1160 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 5019 "bison_parser.cpp" +#line 5022 "bison_parser.cpp" break; case 230: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1158 "bison_parser.y" +#line 1161 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 5025 "bison_parser.cpp" +#line 5028 "bison_parser.cpp" break; case 231: /* comp_expr: operand '=' operand */ -#line 1160 "bison_parser.y" +#line 1163 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5031 "bison_parser.cpp" +#line 5034 "bison_parser.cpp" break; case 232: /* comp_expr: operand EQUALS operand */ -#line 1161 "bison_parser.y" +#line 1164 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 5037 "bison_parser.cpp" +#line 5040 "bison_parser.cpp" break; case 233: /* comp_expr: operand NOTEQUALS operand */ -#line 1162 "bison_parser.y" +#line 1165 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 5043 "bison_parser.cpp" +#line 5046 "bison_parser.cpp" break; case 234: /* comp_expr: operand '<' operand */ -#line 1163 "bison_parser.y" +#line 1166 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 5049 "bison_parser.cpp" +#line 5052 "bison_parser.cpp" break; case 235: /* comp_expr: operand '>' operand */ -#line 1164 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 5055 "bison_parser.cpp" +#line 5058 "bison_parser.cpp" break; case 236: /* comp_expr: operand LESSEQ operand */ -#line 1165 "bison_parser.y" +#line 1168 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 5061 "bison_parser.cpp" +#line 5064 "bison_parser.cpp" break; case 237: /* comp_expr: operand GREATEREQ operand */ -#line 1166 "bison_parser.y" +#line 1169 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 5067 "bison_parser.cpp" +#line 5070 "bison_parser.cpp" break; case 238: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1170 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 5073 "bison_parser.cpp" +#line 5076 "bison_parser.cpp" break; case 239: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1171 "bison_parser.y" +#line 1174 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 5079 "bison_parser.cpp" +#line 5082 "bison_parser.cpp" break; case 240: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1175 "bison_parser.y" +#line 1178 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 5085 "bison_parser.cpp" +#line 5088 "bison_parser.cpp" break; case 241: /* opt_window: %empty */ -#line 1176 "bison_parser.y" +#line 1179 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 5091 "bison_parser.cpp" +#line 5094 "bison_parser.cpp" break; case 242: /* opt_partition: PARTITION BY expr_list */ -#line 1178 "bison_parser.y" +#line 1181 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 5097 "bison_parser.cpp" +#line 5100 "bison_parser.cpp" break; case 243: /* opt_partition: %empty */ -#line 1179 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 5103 "bison_parser.cpp" +#line 5106 "bison_parser.cpp" break; case 244: /* opt_frame_clause: frame_type frame_bound */ -#line 1184 "bison_parser.y" +#line 1187 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 5109 "bison_parser.cpp" +#line 5112 "bison_parser.cpp" break; case 245: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1185 "bison_parser.y" +#line 1188 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 5115 "bison_parser.cpp" +#line 5118 "bison_parser.cpp" break; case 246: /* opt_frame_clause: %empty */ -#line 1186 "bison_parser.y" +#line 1189 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 5123 "bison_parser.cpp" +#line 5126 "bison_parser.cpp" break; case 247: /* frame_type: RANGE */ -#line 1190 "bison_parser.y" +#line 1193 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 5129 "bison_parser.cpp" +#line 5132 "bison_parser.cpp" break; case 248: /* frame_type: ROWS */ -#line 1191 "bison_parser.y" +#line 1194 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 5135 "bison_parser.cpp" +#line 5138 "bison_parser.cpp" break; case 249: /* frame_type: GROUPS */ -#line 1192 "bison_parser.y" +#line 1195 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5141 "bison_parser.cpp" +#line 5144 "bison_parser.cpp" break; case 250: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1194 "bison_parser.y" +#line 1197 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5147 "bison_parser.cpp" +#line 5150 "bison_parser.cpp" break; case 251: /* frame_bound: INTVAL PRECEDING */ -#line 1195 "bison_parser.y" +#line 1198 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5153 "bison_parser.cpp" +#line 5156 "bison_parser.cpp" break; case 252: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1196 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5159 "bison_parser.cpp" +#line 5162 "bison_parser.cpp" break; case 253: /* frame_bound: INTVAL FOLLOWING */ -#line 1197 "bison_parser.y" +#line 1200 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5165 "bison_parser.cpp" +#line 5168 "bison_parser.cpp" break; case 254: /* frame_bound: CURRENT_ROW */ -#line 1198 "bison_parser.y" +#line 1201 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5171 "bison_parser.cpp" +#line 5174 "bison_parser.cpp" break; case 255: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1200 "bison_parser.y" +#line 1203 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5177 "bison_parser.cpp" +#line 5180 "bison_parser.cpp" break; case 256: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1202 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5183 "bison_parser.cpp" +#line 5186 "bison_parser.cpp" break; case 257: /* datetime_field: SECOND */ -#line 1204 "bison_parser.y" +#line 1207 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5189 "bison_parser.cpp" +#line 5192 "bison_parser.cpp" break; case 258: /* datetime_field: MINUTE */ -#line 1205 "bison_parser.y" +#line 1208 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5195 "bison_parser.cpp" +#line 5198 "bison_parser.cpp" break; case 259: /* datetime_field: HOUR */ -#line 1206 "bison_parser.y" +#line 1209 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5201 "bison_parser.cpp" +#line 5204 "bison_parser.cpp" break; case 260: /* datetime_field: DAY */ -#line 1207 "bison_parser.y" +#line 1210 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5207 "bison_parser.cpp" +#line 5210 "bison_parser.cpp" break; case 261: /* datetime_field: MONTH */ -#line 1208 "bison_parser.y" +#line 1211 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5213 "bison_parser.cpp" +#line 5216 "bison_parser.cpp" break; case 262: /* datetime_field: YEAR */ -#line 1209 "bison_parser.y" +#line 1212 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5219 "bison_parser.cpp" +#line 5222 "bison_parser.cpp" break; case 263: /* datetime_field_plural: SECONDS */ -#line 1211 "bison_parser.y" +#line 1214 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5225 "bison_parser.cpp" +#line 5228 "bison_parser.cpp" break; case 264: /* datetime_field_plural: MINUTES */ -#line 1212 "bison_parser.y" +#line 1215 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5231 "bison_parser.cpp" +#line 5234 "bison_parser.cpp" break; case 265: /* datetime_field_plural: HOURS */ -#line 1213 "bison_parser.y" +#line 1216 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5237 "bison_parser.cpp" +#line 5240 "bison_parser.cpp" break; case 266: /* datetime_field_plural: DAYS */ -#line 1214 "bison_parser.y" +#line 1217 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5243 "bison_parser.cpp" +#line 5246 "bison_parser.cpp" break; case 267: /* datetime_field_plural: MONTHS */ -#line 1215 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5249 "bison_parser.cpp" +#line 5252 "bison_parser.cpp" break; case 268: /* datetime_field_plural: YEARS */ -#line 1216 "bison_parser.y" +#line 1219 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5255 "bison_parser.cpp" +#line 5258 "bison_parser.cpp" break; case 271: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1220 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5261 "bison_parser.cpp" +#line 5264 "bison_parser.cpp" break; case 272: /* array_index: operand '[' int_literal ']' */ -#line 1222 "bison_parser.y" +#line 1225 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5267 "bison_parser.cpp" +#line 5270 "bison_parser.cpp" break; case 273: /* between_expr: operand BETWEEN operand AND operand */ -#line 1224 "bison_parser.y" +#line 1227 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5273 "bison_parser.cpp" +#line 5276 "bison_parser.cpp" break; case 274: /* column_name: IDENTIFIER */ -#line 1226 "bison_parser.y" +#line 1229 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5279 "bison_parser.cpp" +#line 5282 "bison_parser.cpp" break; case 275: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1227 "bison_parser.y" +#line 1230 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5285 "bison_parser.cpp" +#line 5288 "bison_parser.cpp" break; case 276: /* column_name: '*' */ -#line 1228 "bison_parser.y" +#line 1231 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5291 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; case 277: /* column_name: IDENTIFIER '.' '*' */ -#line 1229 "bison_parser.y" +#line 1232 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5297 "bison_parser.cpp" +#line 5300 "bison_parser.cpp" break; case 285: /* string_literal: STRING */ -#line 1233 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5303 "bison_parser.cpp" +#line 5306 "bison_parser.cpp" break; case 286: /* bool_literal: TRUE */ -#line 1235 "bison_parser.y" +#line 1238 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5309 "bison_parser.cpp" +#line 5312 "bison_parser.cpp" break; case 287: /* bool_literal: FALSE */ -#line 1236 "bison_parser.y" +#line 1239 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5315 "bison_parser.cpp" +#line 5318 "bison_parser.cpp" break; case 288: /* num_literal: FLOATVAL */ -#line 1238 "bison_parser.y" +#line 1241 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5321 "bison_parser.cpp" +#line 5324 "bison_parser.cpp" break; case 290: /* int_literal: INTVAL */ -#line 1241 "bison_parser.y" +#line 1244 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5327 "bison_parser.cpp" +#line 5330 "bison_parser.cpp" break; case 291: /* null_literal: NULL */ -#line 1243 "bison_parser.y" +#line 1246 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5333 "bison_parser.cpp" +#line 5336 "bison_parser.cpp" break; case 292: /* date_literal: DATE STRING */ -#line 1245 "bison_parser.y" +#line 1248 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5344,17 +5347,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5348 "bison_parser.cpp" +#line 5351 "bison_parser.cpp" break; case 293: /* interval_literal: INTVAL duration_field */ -#line 1256 "bison_parser.y" +#line 1259 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5354 "bison_parser.cpp" +#line 5357 "bison_parser.cpp" break; case 294: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1257 "bison_parser.y" +#line 1260 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -5366,11 +5369,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5370 "bison_parser.cpp" +#line 5373 "bison_parser.cpp" break; case 295: /* interval_literal: INTERVAL STRING */ -#line 1268 "bison_parser.y" +#line 1271 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5402,61 +5405,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5406 "bison_parser.cpp" +#line 5409 "bison_parser.cpp" break; case 296: /* param_expr: '?' */ -#line 1300 "bison_parser.y" +#line 1303 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 5416 "bison_parser.cpp" +#line 5419 "bison_parser.cpp" break; case 298: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1309 "bison_parser.y" +#line 1312 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 5427 "bison_parser.cpp" +#line 5430 "bison_parser.cpp" break; case 302: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1318 "bison_parser.y" +#line 1321 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5438 "bison_parser.cpp" +#line 5441 "bison_parser.cpp" break; case 303: /* table_ref_commalist: table_ref_atomic */ -#line 1325 "bison_parser.y" +#line 1328 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5447 "bison_parser.cpp" +#line 5450 "bison_parser.cpp" break; case 304: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1329 "bison_parser.y" +#line 1332 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5456 "bison_parser.cpp" +#line 5459 "bison_parser.cpp" break; case 305: /* table_ref_name: table_name opt_table_alias */ -#line 1334 "bison_parser.y" +#line 1337 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5464,215 +5467,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5468 "bison_parser.cpp" +#line 5471 "bison_parser.cpp" break; case 306: /* table_ref_name_no_alias: table_name */ -#line 1342 "bison_parser.y" +#line 1345 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 5478 "bison_parser.cpp" +#line 5481 "bison_parser.cpp" break; case 307: /* table_name: IDENTIFIER */ -#line 1348 "bison_parser.y" +#line 1351 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5487 "bison_parser.cpp" +#line 5490 "bison_parser.cpp" break; case 308: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1352 "bison_parser.y" +#line 1355 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5496 "bison_parser.cpp" +#line 5499 "bison_parser.cpp" break; case 309: /* opt_index_name: IDENTIFIER */ -#line 1357 "bison_parser.y" +#line 1360 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5502 "bison_parser.cpp" +#line 5505 "bison_parser.cpp" break; case 310: /* opt_index_name: %empty */ -#line 1358 "bison_parser.y" +#line 1361 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5508 "bison_parser.cpp" +#line 5511 "bison_parser.cpp" break; case 312: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1360 "bison_parser.y" +#line 1363 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5514 "bison_parser.cpp" +#line 5517 "bison_parser.cpp" break; case 314: /* opt_table_alias: %empty */ -#line 1362 "bison_parser.y" +#line 1365 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5520 "bison_parser.cpp" +#line 5523 "bison_parser.cpp" break; case 315: /* alias: AS IDENTIFIER */ -#line 1364 "bison_parser.y" +#line 1367 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5526 "bison_parser.cpp" +#line 5529 "bison_parser.cpp" break; case 316: /* alias: IDENTIFIER */ -#line 1365 "bison_parser.y" +#line 1368 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5532 "bison_parser.cpp" +#line 5535 "bison_parser.cpp" break; case 318: /* opt_alias: %empty */ -#line 1367 "bison_parser.y" +#line 1370 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5538 "bison_parser.cpp" +#line 5541 "bison_parser.cpp" break; case 319: /* opt_locking_clause: opt_locking_clause_list */ -#line 1373 "bison_parser.y" +#line 1376 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5544 "bison_parser.cpp" +#line 5547 "bison_parser.cpp" break; case 320: /* opt_locking_clause: %empty */ -#line 1374 "bison_parser.y" +#line 1377 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5550 "bison_parser.cpp" +#line 5553 "bison_parser.cpp" break; case 321: /* opt_locking_clause_list: locking_clause */ -#line 1376 "bison_parser.y" +#line 1379 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5559 "bison_parser.cpp" +#line 5562 "bison_parser.cpp" break; case 322: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1380 "bison_parser.y" +#line 1383 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5568 "bison_parser.cpp" +#line 5571 "bison_parser.cpp" break; case 323: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1385 "bison_parser.y" +#line 1388 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5579 "bison_parser.cpp" +#line 5582 "bison_parser.cpp" break; case 324: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1391 "bison_parser.y" +#line 1394 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5590 "bison_parser.cpp" +#line 5593 "bison_parser.cpp" break; case 325: /* row_lock_mode: UPDATE */ -#line 1398 "bison_parser.y" +#line 1401 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5596 "bison_parser.cpp" +#line 5599 "bison_parser.cpp" break; case 326: /* row_lock_mode: NO KEY UPDATE */ -#line 1399 "bison_parser.y" +#line 1402 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5602 "bison_parser.cpp" +#line 5605 "bison_parser.cpp" break; case 327: /* row_lock_mode: SHARE */ -#line 1400 "bison_parser.y" +#line 1403 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5608 "bison_parser.cpp" +#line 5611 "bison_parser.cpp" break; case 328: /* row_lock_mode: KEY SHARE */ -#line 1401 "bison_parser.y" +#line 1404 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5614 "bison_parser.cpp" +#line 5617 "bison_parser.cpp" break; case 329: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1403 "bison_parser.y" +#line 1406 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5620 "bison_parser.cpp" +#line 5623 "bison_parser.cpp" break; case 330: /* opt_row_lock_policy: NOWAIT */ -#line 1404 "bison_parser.y" +#line 1407 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5626 "bison_parser.cpp" +#line 5629 "bison_parser.cpp" break; case 331: /* opt_row_lock_policy: %empty */ -#line 1405 "bison_parser.y" +#line 1408 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5632 "bison_parser.cpp" +#line 5635 "bison_parser.cpp" break; case 333: /* opt_with_clause: %empty */ -#line 1411 "bison_parser.y" +#line 1414 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5638 "bison_parser.cpp" +#line 5641 "bison_parser.cpp" break; case 334: /* with_clause: WITH with_description_list */ -#line 1413 "bison_parser.y" +#line 1416 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5644 "bison_parser.cpp" +#line 5647 "bison_parser.cpp" break; case 335: /* with_description_list: with_description */ -#line 1415 "bison_parser.y" +#line 1418 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5653 "bison_parser.cpp" +#line 5656 "bison_parser.cpp" break; case 336: /* with_description_list: with_description_list ',' with_description */ -#line 1419 "bison_parser.y" +#line 1422 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 5662 "bison_parser.cpp" +#line 5665 "bison_parser.cpp" break; case 337: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1424 "bison_parser.y" +#line 1427 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 5672 "bison_parser.cpp" +#line 5675 "bison_parser.cpp" break; case 338: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1434 "bison_parser.y" +#line 1437 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5680,11 +5683,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5684 "bison_parser.cpp" +#line 5687 "bison_parser.cpp" break; case 339: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1441 "bison_parser.y" +#line 1444 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5693,11 +5696,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5697 "bison_parser.cpp" +#line 5700 "bison_parser.cpp" break; case 340: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1449 "bison_parser.y" +#line 1452 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5706,89 +5709,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5710 "bison_parser.cpp" +#line 5713 "bison_parser.cpp" break; case 341: /* opt_join_type: INNER */ -#line 1458 "bison_parser.y" +#line 1461 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5716 "bison_parser.cpp" +#line 5719 "bison_parser.cpp" break; case 342: /* opt_join_type: LEFT OUTER */ -#line 1459 "bison_parser.y" +#line 1462 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5722 "bison_parser.cpp" +#line 5725 "bison_parser.cpp" break; case 343: /* opt_join_type: LEFT */ -#line 1460 "bison_parser.y" +#line 1463 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5728 "bison_parser.cpp" +#line 5731 "bison_parser.cpp" break; case 344: /* opt_join_type: RIGHT OUTER */ -#line 1461 "bison_parser.y" +#line 1464 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5734 "bison_parser.cpp" +#line 5737 "bison_parser.cpp" break; case 345: /* opt_join_type: RIGHT */ -#line 1462 "bison_parser.y" +#line 1465 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5740 "bison_parser.cpp" +#line 5743 "bison_parser.cpp" break; case 346: /* opt_join_type: FULL OUTER */ -#line 1463 "bison_parser.y" +#line 1466 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5746 "bison_parser.cpp" +#line 5749 "bison_parser.cpp" break; case 347: /* opt_join_type: OUTER */ -#line 1464 "bison_parser.y" +#line 1467 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5752 "bison_parser.cpp" +#line 5755 "bison_parser.cpp" break; case 348: /* opt_join_type: FULL */ -#line 1465 "bison_parser.y" +#line 1468 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5758 "bison_parser.cpp" +#line 5761 "bison_parser.cpp" break; case 349: /* opt_join_type: CROSS */ -#line 1466 "bison_parser.y" +#line 1469 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5764 "bison_parser.cpp" +#line 5767 "bison_parser.cpp" break; case 350: /* opt_join_type: %empty */ -#line 1467 "bison_parser.y" +#line 1470 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5770 "bison_parser.cpp" +#line 5773 "bison_parser.cpp" break; case 354: /* ident_commalist: IDENTIFIER */ -#line 1478 "bison_parser.y" +#line 1481 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5779 "bison_parser.cpp" +#line 5782 "bison_parser.cpp" break; case 355: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1482 "bison_parser.y" +#line 1485 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5788 "bison_parser.cpp" +#line 5791 "bison_parser.cpp" break; -#line 5792 "bison_parser.cpp" +#line 5795 "bison_parser.cpp" default: break; } @@ -6017,7 +6020,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1488 "bison_parser.y" +#line 1491 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 491edc13..73ed1fa1 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -200,7 +200,10 @@ } delete ($$); } -%destructor { free($$->second); delete ($$); } +%destructor { + free($$->second); + delete ($$); +} %destructor { delete ($$); } <*> diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index bfd3145e..69cfc709 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -162,15 +162,21 @@ CsvOptions::~CsvOptions() { bool CsvOptions::accept_csv_option(std::pair* option) { switch (option->first) { case CsvOptionType::Delimiter: - if (delimiter != nullptr) return false; + if (delimiter != nullptr) { + return false; + } delimiter = option->second; break; case CsvOptionType::Null: - if (null != nullptr) return false; + if (null != nullptr) { + return false; + } null = option->second; break; case CsvOptionType::Quote: - if (quote != nullptr) return false; + if (quote != nullptr) { + return false; + } quote = option->second; break; }